C语言调用fopen提示No such file or directory报错怎么解决
C语言fopen报错No such file or directory修复方案
先补充基础错误判断,明确错误原因
你当前的代码未判断fopen的返回值就直接操作,首先补充空指针判断和错误打印,先确认错误的具体触发原因:
#include <stdio.h> #include <stdlib.h> int main() { char string[105]; // 也可以尝试把路径分隔符换成正斜杠,Windows下fopen兼容这种写法,避免转义错误 FILE* file = fopen("C:\\Users\\Public\\Documents\\a.txt", "r"); if (file == NULL) { perror("文件打开失败"); return EXIT_FAILURE; } while (fgets(string, 100, file)) { printf("%s", string); } fclose(file); return 0; }
常见问题排查项
- 确认文件实际扩展名:Windows默认隐藏已知文件类型的扩展名,如果你手动新建的是文本文档,实际文件名可能是
a.txt.txt而非你以为的a.txt,可以在文件管理器顶部「查看」栏勾选「文件扩展名」,核对实际文件名是否匹配。 - 测试相对路径验证环境问题:把
a.txt放到编译生成的exe同目录下,将fopen的路径参数改为"a.txt",手动双击exe运行测试,如果可以正常打开,说明是路径配置问题:如果是通过IDE直接运行代码,需要检查IDE的运行工作目录配置是否正确;如果是在沙箱/虚拟机/UAC虚拟化环境下运行,程序会被重定向到虚拟存储路径,无法访问真实的系统文件路径。 - 检查程序架构适配:如果你的设备是64位Windows,编译生成的是32位程序,会触发系统文件系统重定向机制,部分系统路径的访问会被自动跳转,可尝试编译生成和系统架构匹配的64位程序再测试。
内容的提问来源于stack exchange,提问作者Donkey Xot
相关产品推荐
相关产品推荐

