You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言使用fopen读取Windows路径文件返回空指针如何解决?

问题原因及解决方案
  • 第一步:先打印具体错误信息定位问题
    你当前代码只输出了自定义的错误提示,没有获取系统返回的具体错误原因,建议把错误判断部分的代码替换为:

    if(!fp){
        perror("fopen 失败"); // 会自动打印系统对应的错误描述,比如文件不存在、权限不足等
        return 1;
    }
    

    运行后根据perror输出的具体内容可以快速定位问题。

  • 第二步:路径输入的常见问题排查

    1. 你可以尝试将路径中的反斜杠\替换为正斜杠/后再输入测试,Windows系统的fopen函数原生支持正斜杠作为路径分隔符,不需要处理转义逻辑,示例输入:C:/Users/User/Desktop/user_missions.csv
    2. 如果是在代码中硬编码路径,才需要对反斜杠做转义(写为\\),运行时通过控制台输入路径不需要额外转义,但要注意不要多输入空格、换行等多余字符。
  • 第三步:修复scanf缓冲区溢出风险
    你当前使用的scanf("%s", file_name)没有限制输入长度,若输入的路径长度超过99字符会触发缓冲区溢出,导致内存异常进而影响fopen调用,建议修改为:

    scanf("%99s", file_name);
    

    限制最多读取99个字符,留1个字节存储字符串结束符\0。

  • 第四步:路径有效性二次验证
    可以先把目标user_missions.csv文件放到你编译生成的exe程序的同目录下,运行程序时直接输入文件名user_missions.csv测试,如果可以正常打开,说明原路径输入有误或者存在权限隔离问题:

    • 常见权限隔离场景:如果你用管理员权限启动IDE/控制台,运行编译后的程序时,访问的管理员账户的Desktop路径和你当前普通用户的Desktop路径不一致,会出现文件实际存在但找不到的问题。
    • 检查Windows资源管理器是否开启了「隐藏已知文件类型的扩展名」,避免实际文件名为user_missions.csv.txt,和你输入的路径不匹配。

内容的提问来源于stack exchange,提问作者李承軒

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:57:03