【发布时间】:2019-10-31 11:23:10
【问题描述】:
我收到此警告“赋值使指针从整数而不进行强制转换” (标记在代码段中)代码工作正常,我做错了什么,我该如何解决这个警告?谢谢
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
} ```
【问题讨论】:
-
就像警告说的那样,您正在尝试将单个字符写入指针。代码不可能正常工作。
c甚至不应该是char而是int。 -
另请注意,
getc返回一个int值,这对于与int值EOF进行比较非常重要。 -
这段代码绝对不可能正常工作。你很幸运。
-
最后关于您的问题,
keys真的应该是指向char的指针数组(即字符串数组)吗?你如何使用这个功能?它应该做什么?END是什么?请尝试创建一个minimal reproducible example 以向我们展示此功能在上下文中的工作原理。