我正在测试一个程序“myprog.c”,如果它运行任何输入参数,它会崩溃:
#include <stdlib.h>
int main(int argc, char * arg[]){
if (argc > 1 ){
abort();
}
}
正如预期的那样,“。/ mrogrog.out abc”崩溃了。但后来我尝试从文件中获取输入:“。/ mrogrog.out&lt; inputs.txt”,其中inputs.txt有两个单词,程序不会崩溃。为什么不?
答案 0 :(得分:2)
那是因为shell没有传递< inputs.txt
作为参数。相反,shell会使inputs.txt
的内容从stdin
中读取。
答案 1 :(得分:1)
因为argc等于1,您可以使用以下代码对其进行验证:
int main(int argc, char * arg[])
{
printf("argc = %i\n", argc);
if (argc > 1 ) {
abort();
}
}
输出:
argc = 1
它的出现是因为你不能像它一样传递参数,如果你用&lt;你的程序会像stdin(filedescriptor numero 0)
那样解释它如果你想传递多于1的参数,那就喜欢它了:
./ a.out abc def ghi
如果你想得到&#34;论证&#34;通过文件,使用getline