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

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终端)

  1. 把上面的代码保存为file_reader.c
  2. 用gcc编译:gcc -o cfile file_reader.c
  3. 运行程序并传入文本文件:./cfile text.txt

关键注意事项

  • 一定要检查参数数量:如果用户忘了传文件名,程序要给出清晰的提示,避免崩溃
  • 检查文件是否打开成功:如果文件不存在、权限不够,fopen会返回NULL,必须处理这种情况
  • 用完文件记得关闭:养成良好的习惯,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:07:34