在“/getc.c”eclipse c ubuntu 找不到源文件

标签 c linux ubuntu gdb fgetc

刚刚在我的 Linux 上安装了 eclipse 并尝试使用文件。 我想使用 fgetc 函数,但它似乎不起作用.. 调试时:即使我使用 step 超越它的迷恋,并且在让它运行时它只是不做任何事情。 它也适用于与文件相关的每个函数,如 fscanf、fgets 等。

错误信息是:

无法在“/build/glibc-OTsEL5/glibc-2.27/libio/getc.c”中找到源文件 找到文件或编辑源查找路径以包含其位置。

有什么想法吗?

进阶了

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
int main(){
    func();
return 0;
}

void func(){
  int ch;
  int fd = open("out.txt", O_RDONLY);
  if(fd < 0)
          perror("fd");
  ch = fgetc(fd);
  printf("%d",ch);
}

最佳答案

错误消息来自调试器。这表明为你的系统构建glibc的人没有将源文件添加到调试信息中。因此,单步执行诸如 fgetc 之类的系统库函数非常困惑。但这与您的实际问题无关。

您不能将 open 等文件描述符函数与 fgetc 等文件流函数混合使用。编译器将打印类型不匹配警告;你真的不应该忽视这些。

像这样应该可以修复类型错误:

  File *fp = fopen("out.txt", "r");
  if (fp == NULL) {
    perror("fopen");
    return 1;
  }
  ch = fgetc(fp);

如果您想继续使用无缓冲 I/O 和打开,您将不得不使用read 函数而不是fgetc 来读取字节。

关于在“/getc.c”eclipse c ubuntu 找不到源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55091508/

相关文章:

javascript - 如何在 Javascript 中循环十六进制?

c - write() to serial port 在调用两次时失败

C 读取页面的 HTML

C 程序 strcmp 不工作

.net - 如何在 Ubuntu/Linux 中部署 Node.js 应用程序?

linux - Unix Bash - 引用内部函数并传递参数

c - 如何在定义时初始化结构?

linux - rm 可以用来同步锁文件检查吗?

linux - 我可以将哪些功能放入 Docker Nginx 容器中?

python - Pyo server.boot() 在 Ubuntu 14.04 上因 pyolib._core.PyoServerStateException 而失败