"Warning: assignment makes integer from pointer without a cast" 使用 char malloc

"Warning: assignment makes integer from pointer without a cast" using a char malloc

我正在编写代码以从路径中删除文件名和类型。但是,我收到有关我更改字符内容的行的警告。我怎样才能摆脱警告?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *getPath(char *fullPath){
    char *aux;
    int a, b, c;    
    
    
    aux = malloc(50 * sizeof(char));        
    aux = fullPath;
    
    
    a = strlen(aux);    
    
    
    for(b=0; b<a; b++){
        if (aux[b] == '/'){
            c = b;
        }
    }
    
    
    for(c; c < a; c++){
///PROBLEM HERE
        aux[c] = "";                
    }   
///PROBLEM HERE 
    return aux;
}



int main(void) {
    
    char C[50];
    char *path, *filename;
    scanf("%s", C);
    
    path = getPath(C);
    
    printf("%s", path);
    
}
aux[c] = ""; // here "" is a char *

aux 是一个 char *,因此 aux[c] 是一个 char(不是字符串 ""

aux[c] = '[=11=]'; 

正如评论中所写,其余代码中还有其他错误:例如aux值被删除。

已尝试修复整个代码。

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

bool getPath(char *const strippedPath, const int strippedPath_buflen,const char *const fullPath){
  int b=strlen(fullPath);
  for(;;){
    --b;
    if(b<0)
      return false;
    if('/'==fullPath[b])
      break;
  }
  if(strippedPath_buflen<b+1)
    return false;
  strncpy(strippedPath,fullPath,b);
  strippedPath[b]='[=10=]';
  return true;
}

int main(void) {
  for(;;){
    char C[50]={};
    printf("> ");
    fflush(stdout);
    scanf("%s",C);
    if(0==strcmp("quit",C))
      break;
    char path[3+1]={'X','X','X','X'};
    if(getPath(path,4,C))
      printf("%s\n",path);
    else
      printf("err\n");
  }
  return 0;
}
> aaaa/b.txt
err
> aaa/b.txt
aaa
> a/c/b.txt
a/c
> aa/b.txt
aa
> a/b.txt
a
> a/
a
> /b.txt

> b.txt
err
> quit