c - 警告 - 赋值使指针从整数而不进行强制转换
问题描述
我收到了这个警告“赋值使指针从没有强制转换的整数”(在代码段中标记)代码工作正常,我做错了什么,我该如何解决这个警告?谢谢
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
}
无效,因为将所有文件写入一条记录而不是记录数组是正确的。
推荐阅读
- excel - 循环时在If函数中的VBA嵌套Iferror
- sql - 如何在使用 group by 子句时从 join 返回列?
- android - 如何从我的代码中删除 Android 视图的 ButterKnife 绑定?
- excel - FileSaver.js 与 Angular 7
- node.js - NodeJs npm requestretry 包不适用于 AWS Lambda Nodejs8.10
- json - OpenApi 按标签分隔定义
- python - Python中带有移位函数的线性回归
- vb.net - 在 Visual Basic 中计算有或没有及格分数的学生人数
- spring - @Cacheable 和启动期间的初始化
- node.js - 为什么在 nodejs 中测试我的代码时出现错误