CS50作业问题:处于文件所在目录却提示No such file or Directory
CS50习题文件找不到问题解决
核心错误原因
看你的环境截图,当前目录下的目标文件名是plates,但你运行程序时传入的参数是plates.txt——系统找不到带.txt后缀的文件,所以抛出No such file or Directory错误。
快速修复方法
运行程序时使用正确的文件名:
./read plates
代码额外优化建议
你的代码还有两个需要修复的问题,避免后续出现异常:
- 添加文件打开检查:
fopen可能因权限、文件不存在等原因返回NULL,直接使用会导致程序崩溃,补充检查逻辑:FILE *infile = fopen(argv[1], "r"); if (infile == NULL) { printf("无法打开指定文件。\n"); return 1; } - 修复内存指向问题:
plates数组存储的都是buffer的地址,循环结束后所有元素会指向最后一次读取的内容。需要为每个车牌号分配独立内存,比如用strdup:plates[idx] = strdup(buffer); // 注意:程序结束前要调用free(plates[i])释放每个元素的内存,避免内存泄漏
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

