gpt4 book ai didi

c - 在 Linux 终端中打开用户指定的文件名

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:14 24 4
gpt4 key购买 nike

我正在 Linux 上用 C 编写程序,我想让用户指定要从终端打开的文本文件。所以用户输入:

./program < nums.txt

程序将读取该 .txt 文件中的内容。目前,我使用以下代码自行指定要打开的文件名:

fp = fopen("nums.txt","r");

请注意,nums.txt 仅包含两个由空格分隔的数字,用于最小值和最大值。

我刚开始学习 C,不确定如何去做。我已经搜索了 Stack Overflow 并使用了搜索引擎,但仍然无法解决这个问题。

谢谢。

最佳答案

这可能有助于理解 shell 输入重定向的工作原理。

对于您给出的命令行,shell 将打开文件并将其连接到进程的标准输入。 C 已经有一个标准输入流,所以你可以像这样使用它,不需要 fopen 需要:

fp = stdin;

另一方面,如果您希望用户像这样运行您的程序:

./program nums.txt

然后您将要使用main 函数的argcargv 参数,例如:

int main(int argc, char **argv)
{
if (argc < 2)
return 1;

FILE *fp = fopen(argv[1], "r");

...

argc 变量包含传递的参数数量,argv 是一个数组,每个参数都是一个字符串。用于调用程序的名称通常是第一个元素 (argv[0]),这就是我使用 argv[1] 的原因。而且,与往常一样,在处理数组时,请确保您不要尝试访问末尾之后的内容。

关于c - 在 Linux 终端中打开用户指定的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18836469/

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