编译警告:从不同大小的整数转换为指针

Compile Warning: converting to pointer from integer of different size

我对c的了解很少

编译时,我收到此警告:

converting to pointer from integer of different size

strcpy(aux, (char*)valDate(argv[7]) );

在执行编译后的文件时,我得到这个错误:分段冲突。

valDate 函数:

char * valDate(char *date)
{
  char fecha[9];
  sprintf(fecha,"%4.4s%2.2s%2.2s", &date[1], &date[6], &date[9]);
  fecha[8]='[=11=]';
  return (char*)fecha;
}

您正在返回一个指向函数内部定义的变量的指针。当该函数退出时,该变量可能是 destroyed/inaccessible 即分段违规。

在函数外定义fecha,传入一个指针,让函数可以修改。

或者在堆上为该变量分配内存

char *fecha = malloc(sizeof(char) * 9);

N.B.: 每当您分配内存时,您必须稍后释放该内存。所以只有在合适的情况下才使用它。