C 当程序多次请求输入时,使用文件作为程序输入

C 当程序多次请求输入时,使用文件作为程序输入,c,input,C,Input,我有一个程序,要求用户输入两次。我想用文件为程序提供输入,但无法理解。由于它要求输入两次,我无法将文件通过管道传输到程序,因此我正在尝试: ./prog <in1 <in2 输入文件中只有几个字符。救命啊 如果文件in1中没有\n,则strchr将找不到任何内容,并将返回NULL 接下来,您的代码将尝试取消引用NULL,并导致seg故障。 这可能是你麻烦的根源 为了防止出现\n不存在的情况,我建议使用以下代码: char* p = strchr(buf, '\n'); if (p

我有一个程序,要求用户输入两次。我想用文件为程序提供输入,但无法理解。由于它要求输入两次,我无法将文件通过管道传输到程序,因此我正在尝试:

./prog <in1 <in2

输入文件中只有几个字符。救命啊

如果文件
in1
中没有
\n
,则
strchr
将找不到任何内容,并将返回
NULL

接下来,您的代码将尝试取消引用
NULL
,并导致seg故障。
这可能是你麻烦的根源

为了防止出现
\n
不存在的情况,我建议使用以下代码:

char* p = strchr(buf, '\n');
if (p != NULL) {
    *p = '\0';
}
puts(buf);      

至于从多个文件定向输入,如果您在*nix系统上,请尝试以下操作:

./prog < `cat in1 in2`
/prog<`cat in1 in2`

它如何要求用户输入?你在那里做的管道只是重定向stdin,如果你指定其中两个,我实际上不知道会发生什么:S
./prog < `cat in1 in2`