c - 如何修复不读取文本文件的功能(验证输入)?
问题描述
每当我输入一个文本文件供我的程序读取时,我总是会收到以下消息:
Unable to open file: big_file.txt
Ending program.
我不确定程序的哪个部分不起作用。我假设它是 main() 或 validate_input() 函数中的东西:
FILE* validate_input(int argc, char* argv[]){
FILE* fp = NULL;
if(argc < 2){
printf("Not enough arguments entered.\nEnding program.\n");
exit(0);
}
else if(argc > 2){
printf("Too many arguments entered.\nEnding program.\n");
exit(0);
}
fp = fopen(argv[1], "r");
if(fp == NULL){
printf("Unable to open file: %s\nEnding program.\n", argv[1]);
exit(0);
}
return fp;
}
int main(int argc, char* argv[]){
char** lines = NULL;
int num_lines = 0;
FILE* fp = validate_input(argc, argv);
read_lines(fp, &lines, &num_lines);
print_lines(lines, num_lines);
free_lines(lines, num_lines);
fclose(fp);
return 0;
}
我希望程序输出给定文本的每一行,前面有一个数字,计算每一行,但每次我输入一个文件时,它都声称它无法读取。
更新:当我添加fprintf(stderr, "Unable to open file %s: %s\n", argv[1], strerror(errno));
我的输出是:
Unable to open file big_file.txt: No such file or directory
但文件在我的桌面上。
解决方案
推荐阅读
- mysql - 即使有索引,我的查询也很慢
- python - 如何用相似的词得到正确的 if 语句?
- c - BFS 上的无限循环
- nativescript - 更新 nativescript 文件夹和文件后未在我的 android 手机中创建
- sql-server - 当另一个索引聚集时,我可以使主键不聚集吗?
- django - 如何打印选择字段的字符串值
- makefile - 如何在 Makefile 中添加多个 Headers 文件路径?
- java - 在不解析 XML 文件的情况下提取 XML 中的所有 XML 命名空间
- java - 为什么游戏循环渲染的次数多于更新的次数
- javascript - Quickblox javascript 消息中的自定义参数