【发布时间】:2019-09-04 02:02:13
【问题描述】:
我正在尝试编写一个简单的 C 程序来一次从文件中读取一定数量的字符,然后将其存储在一个变量中。例如,一次 10 个字符。
我正在尝试使用 fgets() 执行此操作,但它一直返回错误 失败:设备的非法 ioctl,我无法排除故障,在搜索有关它的一些信息后也找不到。
我多次尝试重写我的代码,并阅读了文档,但我仍然找不到问题的根源。
这是我的代码:
主函数(我已经完成了参数检查,但为简单起见省略了它们)
int main(int argc,char *argv[]) {
FILE *file;
file=check_file(argv[1]);
readCharacters(file);
return 0;
}
检查文件功能
FILE * check_file(char *fileName)
{
FILE *file = fopen(fileName, "rb");
if(!file) {
perror("SENDER: File does not exists");
fclose(file);
exit(1);
}
return file;
}
读字符功能
void readCharacters(FILE* fp) {
char buff[TOTALCHAR], *result;
if ((result = fgets(buffer,TOTALCHAR,fp)) != NULL)
printf("The string is %s\n", result);
else if (ferror(fp)) {
perror("FAILED");
} else {
printf("EOF was reached");
}
如果我的文本文件是:
“敏捷的棕狐跳过懒狗”
预期结果:
First String = "快速棕色" Second String = "狐狸跳过" 等等
实际结果:
到达EOF
编辑:我在回答原始问题后更新了我的代码,结果发现已经达到 EOF。但是,我正在读取的文件绝对不是空的
【问题讨论】: