错误“赋值从没有强制转换数组的指针生成整数= NULL”

时间:2018-01-24 20:01:57

标签: c pointers null malloc

当我编译我的项目时,我得到了错误(“赋值使得没有强制转换数组的指针生成整数= 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;

1 个答案:

答案 0 :(得分:0)

您收到该错误的原因是第carray[m] = NULL行。 NULL似乎定义为((void*)0),而不仅仅是0,因此编译器已正确识别您正在将指针(NULL)分配给整数值(carray[m])这是一个char。将该行改为carray[m] = 0,该特定错误应该消失。