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

C语言fopen打开leitura.txt返回NULL报ERROR问题如何解决?

fopen返回NULL问题修复方案

问题根因

  • 相对路径匹配错误:fopen传入相对路径leitura.txt时,会从程序运行时的当前工作目录查找文件,而非源代码存放目录,绝大多数fopen失败都是该原因导致
  • 权限或文件锁定问题:运行程序的账号没有leitura.txt的读取权限,Windows环境下可能存在文件被其他进程独占锁定的情况
  • 代码存在语法缺陷:exit函数定义在<stdlib.h>头文件中,原代码未引入该头文件,属于未定义行为,不过该问题不会直接导致fopen返回NULL

修复步骤

  1. 路径问题修复,二选一即可:
    • 将leitura.txt放到编译生成的可执行文件同目录下,运行程序时不要切换工作目录
    • 直接传入文件绝对路径:Windows环境下写法为fopen("C:\\用户文件夹\\xxx\\leitura.txt", "r"),Linux/macOS环境下写法为fopen("/home/xxx/leitura.txt", "r")
  2. 优化报错逻辑,替换原有的固定ERROR输出,用perror打印系统级错误原因,方便快速定位问题
  3. 补全缺失的头文件,同时优化变量类型避免溢出:ftell返回值为long类型,原代码用int存储存在大文件下的溢出风险

修复后完整代码

#include <stdio.h>
#include <stdlib.h>

int main(){
    FILE * arq = NULL;
    char c;
    long x;
    arq = fopen("leitura.txt", "r");
    if (arq == NULL){
        perror("打开leitura.txt失败");
        exit(EXIT_FAILURE);
    }
    while (fscanf(arq, "%c", &c) != EOF){
        printf("%c", c);
    }
    x = ftell(arq);
    printf("NUMBER OF BYTES: %ld\n", x);
    fclose(arq);
    return 0;
}

内容的提问来源于stack exchange,提问作者LPJ 141

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:54:07