c - 为什么我会收到此错误和警告?错误和警告在描述中

标签 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;
} 

最佳答案

这个错误是完全正确的。 这行代码:

read = b;

尝试将 b(一个 char)的值分配给 read(一个返回 int 的函数) .

删除该行并返回b。编译器将为您将 char 提升为 int。或者,更好的是,将 b 更改为 int,因为您可能不知道(但正如上面一些程序员指出的那样),fgetc 返回一个int

关于c - 为什么我会收到此错误和警告?错误和警告在描述中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55246835/

相关文章:

c - 是否有用于 OpenAuth 或任何其他社交网络身份验证方法的嵌入式 API?

android - 由于 'build' 文件夹问题,适用于 Android 的 React Native 编译在 Windows 上失败

解析来自 xml 的数组时出现 PHP 错误

compiler-errors - RAD在执行“清理所有项目并自动生成”时显示编译错误

c# - 类型或命名空间名称 'Linq' 不存在

c - 如何识别C中整数输入的特定数字?

c - 尽管有无限的 ulimit,为什么非常大的堆栈分配会失败?

c - 替换星号使字符串相等,但是怎么做呢?

与 malloc 混淆

c++ - C2975 'N' 的无效模板参数,预期的编译时常量表达式