刚刚在我的 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/