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

时间:2013-05-30 23:23:58

标签: c input

我有一个程序要求用户输入两次。我想使用文件给程序输入但无法弄清楚。因为它要求输入两次我无法将文件传递给程序所以这就是我正在尝试的:

./prog <in1 <in2

但程序因分段错误而崩溃。

程序调用此函数两次:

void print() {
    char buf[4096];

    read(0, buf, sizeof buf);
    *strchr(buf, '\n') = 0;
    puts(buf);      
}

输入文件中只有几个字符。求救!

1 个答案:

答案 0 :(得分:0)

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

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

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

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

至于从多个文件引导输入,如果你在* nix系统上,试试这个:

./prog < `cat in1 in2`