c - 错误 "assignment makes integer from pointer without a cast array = NULL"

标签 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;

最佳答案

您收到该错误的原因是行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/

相关文章:

c++ - 指向成员函数的指针在不同地址空间之间的可交换性

C - fscanf 未从文本文件中正确读取数字

c - 如何在 C 语言中对程序中正在计算的变量进行数值积分作为指针(使用例如梯形规则)

php - mysql_query ("SELECT...") 为不存在的主键值返回 NULL 值行,呈现 (mysql_num_rows > 0) 检查无用

java - Android:表示接口(interface)的所有字段都是@Nullable

regex - 使用 REGEX 在 Hive Create 和 Load Query 中获取空值

c - 使用内核模块锁定内部系统调用

objective-c - 使用 LLVM 5 在 Objective-C 的结构中声明枚举

c - 将 Unix time_t 转换为任意时区/从任意时区转换的最佳方法?

c - 读取文件错误