我是C的新手,并且在用户输入时尝试运行几行代码。出于某种原因,我在这一行收到错误:
pip
错误是:“此行有多个标记。指针和零字符常量之间的比较。你的意思是取消引用指针吗?从不兼容的指针类型传递'fgets'的参数1。
有什么想法吗?
答案 0 :(得分:2)
您似乎要将线条读入二维数组的元素。
从C标准(7.21.7.2 fgets功能)
3如果成功,fgets函数返回s。 如果文件结尾是 遇到并且没有字符被读入数组, 数组的内容保持不变,并返回空指针。 如果在操作期间发生读取错误,则数组内容为 不确定并返回空指针。
因此,正确的循环可能看起来像
size_t i = 0;
while( i < SIZE && fgets(names[i], LENGTH, stdin) != NULL)
{
//...
++i;
}
或者,如果您在遇到空行时要停止阅读行,那么您可以写
size_t i = 0;
while( i < SIZE && fgets(names[i], LENGTH, stdin) != NULL && names[i][0] != '\n' )
{
//...
++i;
}
编译器发出的错误消息意味着以下
传递&#39; fgets&#39;的参数1来自不兼容的指针类型。
在此函数调用中
fgets(names, LENGTH, stdin)
用作第一个参数的表达式names
具有类型char ( * )[LENGTH]
,但该函数需要类型为char *
的参数。
&#34;指针和零之间的比较 字符常数。你的意思是取消引用指针吗?
此消息表示编译器无法断定函数指针返回的是否与空指针进行比较,或者您要将返回指针指向的字符与字符'\0'
进行比较。 / p>