通过终端将文本文件的内容传递给main时获取(空)

时间:2018-10-28 14:53:58

标签: c

我是C语言的初学者,但通过终端将简单的.txt内容传递给C程序时遇到了问题。

终端行:

./uloh <tests/0000_in.txt

0000_in.txt的内容只是一个数字“ 1”

C代码(uloh.c)

#include <stdio.h>
int main (int argc, char* argv[])
{
    printf("Passed digit:\n%s\n", argv[1]);
    return 0;
}

终端输出: 传递的数字: (空)

但是! 如果只打电话

./uloh 1

然后输出就可以了。有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

此命令

./uloh <tests/0000_in.txt

不会将任何参数传递给uloh shell 将重定向文件tests/0000_in.txt作为uloh的标准输入流。

请参见How do you use input redirection from a file in C?

答案 1 :(得分:0)

Command line arguments以数组的形式传递给程序,您可以对它们进行所需的操作。换句话说,command line args是在调用main之前准备的。另一方面,stdin是程序必须从中请求数据的输入流。

如果程序从stdin读取参数,则可以从文件将输入提供给程序。

例如。

int d;
scanf("%d\n", &d);

如果您要传递的值来自命令行参数,则您无法真正通过终端输入文件。

对于您的特定情况,如果要从文件提供输入,则可以尝试类似的操作。

#include <stdio.h>
int main (int argc, char* argv[])
{
    int d;
    scanf("%d\n", &d);
    printf("Passed digit:\n%d\n", d);
    return 0;
}