我有一个无法解决的问题。 我收到错误:错误:非对象类型'int()'无法分配 读= b; 和警告:警告:整数转换的不兼容指针从结果类型为'int'的函数返回'int()'[-Wint-conversion] 返回读取;
我想将值b返回给main,我想知道为什么它不起作用。我希望你能帮助我。 这是代码:
#include <stdio.h>
int read()
{
FILE *fptr;
char b;
fptr = fopen("./chat.txt","r");
if(fptr == NULL)
{
printf("Something went wrong");
}
b = fgetc(fptr);
while(b != EOF)
{
printf ("%c", b);
b = fgetc(fptr);
}
fclose(fptr);
read = b;
return read;
}
答案 0 :(得分:2)
该错误是完全正确的。 这行代码:
read = b;
尝试将b
的值char
分配给read
,这是一个返回int
的函数。
删除该行,然后仅返回b
。编译器会为您将char
提升为int
。或者,最好将b
更改为int
,因为您可能不知道(但是正如某些程序员所指出的那样),fgetc
返回一个int
。>
答案 1 :(得分:0)
如克里斯蒂安(Christian)的第一份答复所述,您正在尝试将函数名称 read 分配给值 b < / strong>。
您只需要:
return b;
查看您的代码,看起来它只会返回 EOF ,因为这是 b < / strong>将在您返回之前使用。不知道为什么您需要这样做,所以以为我会提到它。
您可以通过使用do / while来对其进行一些改进:
do
{
b = fgetc(fptr);
printf ("%c", b);
} while( b != EOF );