gpt4 book ai didi

c - 警告 - 赋值使指针来自整数而不进行强制转换

转载 作者:行者123 更新时间:2023-11-30 21:36:11 24 4
gpt4 key购买 nike

我收到此警告“赋值使指针来自整数而不进行强制转换”(在代码块中标记)代码工作正常,我做错了什么以及如何修复此警告?感谢x

 void Read_Keys(char *keys[MAX_LEN])  //Read the keys from input file 
{
char c,Fname[MAX_LEN];

gets(Fname);
FILE *fptr = (fopen(Fname, "r")); // Input stream pointer assume

if(fptr == NULL)
{
printf("No Such File...");
exit(EXIT_FAILURE);
}
if(fptr) //if not empty get in
{
int i = 0;
while((c = getc(fptr)) != EOF) //while loop copies each char from file
{ //to keys array
** keys[i] = c; // ** WARNING IS HERE
i++;
}
keys[i+1] = END; //ending point assume
}
fclose(fptr); //Close file for security issues
} ```

最佳答案

参数键的声明如下

char *keys[MAX_LEN]

编译器将其调整为以下声明

char **keys

所以在这个声明中

keys[i] = c;

左操作数的类型为char *,即它是一个指针,而右操作数的类型为char

因此编译器会发出警告,因为此分配没有意义。

我怀疑无论如何参数声明不正确。看来你的意思是以下声明

void Read_Keys(char ( *keys )[MAX_LEN]);

也就是说,您正在尝试将二维数组传递给函数。但无论如何这个代码片段

    int i = 0;
while((c = getc(fptr)) != EOF) //while loop copies each char from file
{ //to keys array
keys[i] = c; // ** WARNING IS HERE
i++;
}
keys[i+1] = END; //ending point assume
}

无效,因为将所有文件写入一条记录而不是记录数组中是正确的。

关于c - 警告 - 赋值使指针来自整数而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58642304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com