macOS终端下C程序读取文本文件:如何获取命令行传入的文件参数
命令行传入文件给C程序的正确姿势
嘿,我来帮你搞清楚这个问题!完全不用把文件名硬编码到代码里,那样太不灵活了——你要的就是通过命令行参数动态获取文件,这在C语言里是很基础也很常用的操作。
核心原理:利用main函数的命令行参数
C语言的main函数支持接收命令行参数,标准写法是:
int main(int argc, char *argv[])
这里的两个参数是关键:
argc:表示命令行传入的参数总个数(包括程序本身)argv:一个字符串数组,每个元素对应一个参数。比如你输入./cfile text.txt,那么:argv[0]=./cfile(你的程序路径/名称)argv[1]=text.txt(你传入的文件名)
完整示例代码
下面是一个可以直接用的小例子,能读取命令行传入的文本文件并输出内容:
#include <stdio.h> int main(int argc, char *argv[]) { // 第一步:检查用户是否传入了正确数量的参数 if (argc != 2) { printf("正确用法:%s <要读取的文本文件名>\n", argv[0]); return 1; // 返回非0表示程序异常退出 } // 第二步:用传入的文件名打开文件 FILE *file_ptr = fopen(argv[1], "r"); if (file_ptr == NULL) { printf("错误:无法打开文件 %s\n", argv[1]); return 1; } // 第三步:读取并输出文件内容(这里用逐行读取的方式) char line_buffer[256]; while (fgets(line_buffer, sizeof(line_buffer), file_ptr) != NULL) { printf("%s", line_buffer); } // 最后别忘了关闭文件 fclose(file_ptr); return 0; }
编译与运行步骤(macOS终端)
- 把上面的代码保存为
file_reader.c - 用gcc编译:
gcc -o cfile file_reader.c - 运行程序并传入文本文件:
./cfile text.txt
关键注意事项
- 一定要检查参数数量:如果用户忘了传文件名,程序要给出清晰的提示,避免崩溃
- 检查文件是否打开成功:如果文件不存在、权限不够,
fopen会返回NULL,必须处理这种情况 - 用完文件记得关闭:养成良好的习惯,避免资源泄漏
内容的提问来源于stack exchange,提问作者Florezz
相关产品推荐
相关产品推荐

