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

如何使用C语言读取不同目录下的words.txt文件?

C语言读取不同目录下的文件内容

要读取不在同一目录的文件,核心是给fopen()传入正确的文件路径,分两种常用方式:

1. 使用相对路径

相对路径是相对于程序运行时的工作目录(或主程序文件所在目录,取决于运行方式)。根据你的目录结构(主程序在src目录,words.txt在同级的data目录),相对路径应写成../data/words.txt:

  • ../ 表示回到当前目录的上级目录
  • 后续跟上目标文件所在的子目录和文件名

示例代码:

#include <stdio.h>

int main() {
    // 以只读模式打开目标文件
    FILE *file = fopen("../data/words.txt", "r");
    if (file == NULL) {
        perror("无法打开文件");
        return 1;
    }

    // 逐字符读取并输出文件内容
    int ch;
    while ((ch = fgetc(file)) != EOF) {
        putchar(ch);
    }

    fclose(file);
    return 0;
}

注意:如果IDE运行程序的默认工作目录是项目根目录(而非src),相对路径需改为data/words.txt,可通过IDE运行配置查看或修改工作目录。

2. 使用绝对路径

绝对路径是文件在系统中的完整位置,不依赖工作目录,适合固定位置的文件:

  • Windows系统示例:"D:/project/data/words.txt"(用正斜杠/,或转义反斜杠\\)
  • Linux/macOS系统示例:"/home/yourname/project/data/words.txt"

示例代码:

#include <stdio.h>

int main() {
    // Windows绝对路径示例(转义反斜杠写法)
    // FILE *file = fopen("D:\\project\\data\\words.txt", "r");
    // Linux/macOS绝对路径示例
    FILE *file = fopen("/home/yourname/project/data/words.txt", "r");
    
    if (file == NULL) {
        perror("无法打开文件");
        return 1;
    }

    // 批量读取内容(适合大文件)
    char buffer[1024];
    size_t bytes_read;
    while ((bytes_read = fread(buffer, 1, sizeof(buffer), file)) > 0) {
        fwrite(buffer, 1, bytes_read, stdout);
    }

    fclose(file);
    return 0;
}

关键注意事项

  • 必须检查fopen()返回值:返回NULL意味着文件不存在、路径错误或无读取权限,perror()可输出具体错误原因。
  • 路径分隔符:Windows用反斜杠\,C字符串中需写成\\;Linux/macOS用正斜杠/,直接书写即可。
  • 命令行运行时的工作目录:如果用终端启动程序,工作目录是你当前所在的目录,而非程序文件的目录,需对应调整相对路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:05:01