如何使用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
相关产品推荐
相关产品推荐

