当我编译我的项目时,我收到错误(“赋值从指针生成整数,而没有强制转换数组 = NULL”)。我不明白为什么它在 if 语句中起作用,而在 else 语句中不起作用。
FILE *fp;
int i,j,m,n;
char citemp;
if (!(fp = fopen(trainingsInputFile, "r"))) {
perror("Datei konnte nicht gelesen werden");
}
else {
i = 0;
j = 0;
n = 0;
char *carray = (char*)malloc(sizeof(char) * 20);
while (!feof(fp)) {
citemp = getc(fp);
if(citemp != ';'){
if(citemp != ','){
carray[j] = citemp;
j++;
}else{
trainingsInputArray[n][i] = atof(carray);
for(m = 0; m < j; m++){
carray[m] = NULL;
}
j = 0;
i++;
}
}else{
n++;
i = 0;
}
}
}
fclose(fp);
错误: environment.c:21:警告:赋值从指针生成整数而不进行强制转换 [-Wint-conversion] carray[m] = NULL;
最佳答案
您收到该错误的原因是行carray[m] = NULL
。 NULL 似乎被定义为 ((void*)0)
,而不仅仅是 0
,因此编译器已正确识别您正在分配一个指针 (NULL
) 转换为整数值 (carray[m]
),该值是 char
。将该行更改为 carray[m] = 0
,该特定错误就会消失。
关于c - 错误 "assignment makes integer from pointer without a cast array = NULL",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48430717/