我有一个程序要求用户输入两次。我想使用文件给程序输入但无法弄清楚。因为它要求输入两次我无法将文件传递给程序所以这就是我正在尝试的:
./prog <in1 <in2
但程序因分段错误而崩溃。
程序调用此函数两次:
void print() {
char buf[4096];
read(0, buf, sizeof buf);
*strchr(buf, '\n') = 0;
puts(buf);
}
输入文件中只有几个字符。求救!
答案 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`