为什么会出现此错误和警告?错误和警告在描述中

时间:2019-03-19 17:29:25

标签: c compiler-errors

我有一个无法解决的问题。 我收到错误:错误:非对象类型'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;
} 

2 个答案:

答案 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 );