gpt4 book ai didi

c - 执行C程序时如何传递文件名

转载 作者:太空宇宙 更新时间:2023-11-04 06:18:56 25 4
gpt4 key购买 nike

我试图不在我的 C 程序中对输入文件的名称进行硬编码。当我对文件名进行硬编码时,所有其他组件都在工作。但希望能够向它传递一个字符串文件名。我正在尝试编译一个名为 Matrix.c 的文件并将其命名为可执行文件 matrix

因此,在终端中,当我到达我的工作目录时。

gcc -g Matrix.c -o matrix

然后当我编译

./matrix 

它没有传递给它的文件名,所以我要检查它并让用户输入要加载的文件名。

但是,当有人传递文件名时,是否应该传递为:

./matrix filename.txt

./matrix < filename.txt

使用后一个选项,我似乎无法从 argv[1] 获取传递给函数的参数的名称——它只是“(Null)”。

我知道这是一个非常简单的问题。但我是不是完全疯了?这与我在 OS X El Capitan 上运行有关吗?我知道我以前使用过“<”约定。

最佳答案

问题主要在于 shell 的工作方式。当您使用时:

./matrix filename.txt

然后程序有两个参数——程序名和文件名。当您使用时:

./matrix < filename.txt

然后只给程序一个参数——程序名——shell 安排它的标准输入来自文件(并且文件名不会传递给你的程序)。

两者都可以工作;您只需要决定要支持哪个。如果用户键入 ./matrix file1.txt file2.txt file3.txt 会发生什么?传统行为的一个版本是依次处理每个文件,将每组结果写入标准输出。有很多可供选择的行为——其中大部分都曾被某人使用过。当没有指定文件名时从标准输入读取是一种常见的操作模式(想想 catgrep 和……)。

关于c - 执行C程序时如何传递文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39691641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com