我是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
然后输出就可以了。有人可以帮我吗?
答案 0 :(得分:1)
此命令
./uloh <tests/0000_in.txt
不会将任何参数传递给uloh
。 shell 将重定向文件tests/0000_in.txt
作为uloh
的标准输入流。
答案 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;
}