刚刚在我的Linux上安装了eclipse并尝试使用文件。 我想使用fgetc函数,但似乎无法正常工作.. 在调试时:即使我使用Im来克服它的迷恋,并在运行时只是不做任何事情。 与fscanf,fgets等文件相关的所有功能也会发生这种情况。
错误信息是:
Can't find a source file at "/build/glibc-OTsEL5/glibc-2.27/libio/getc.c"
Locate the file or edit the source lookup path to include its location.
有什么想法吗?
thnk高级
这是我的代码:
#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);
}
答案 0 :(得分:2)
错误消息来自调试器。它表明,为您的系统构建glibc的任何人都没有将源文件添加到调试信息中。结果,单步执行诸如fgetc
之类的系统库功能非常令人困惑。但这与您的实际问题无关。
您不能将open
之类的文件描述符功能与fgetc
之类的文件流功能混合使用。编译器将显示打印类型不匹配警告;您真的不应该忽略这些。
类似这样的方法应该可以修复类型错误:
File *fp = fopen("out.txt", "r");
if (fp == NULL) {
perror("fopen");
return 1;
}
ch = fgetc(fp);
如果要继续使用无缓冲的I / O和open
,则必须使用read
函数而不是fgetc
来读取字节。