c - 从标准输入参数读取时出现意外行为



我正在测试一个程序"myprog.c",如果它使用任何输入参数运行,它会崩溃:

#include <stdlib.h>
int main(int argc, char * arg[]){
  if (argc > 1 ){
    abort();
  }
}

正如预期的那样,"./myprog.out abc"崩溃了。但是后来我试图从一个文件中获取输入:"./myprog.out <inputs.txt",其中输入.txt有几个单词,程序不会崩溃。为什么不呢?>

这是因为 shell 不会将< inputs.txt作为参数传递。相反,外壳使inputs.txt的内容可以从stdin中读取。

这是因为 argc 等于 1,您可以使用以下代码对其进行验证:

int     main(int argc, char * arg[])
{
    printf("argc = %in", argc);
    if (argc > 1 ) {
        abort();
    }
}

输出:

Argc = 1

它的出现是因为你不能像它一样传递参数,如果你用一个

如果你想传递比 1 更多的参数,请喜欢它:

.

/a.out abc def ghi

如果你想通过文件获取"参数",请使用 getline

相关内容

最新更新