while( (c = fgetc(stdin)) != EOF ){
count++;
if (count == lineLen - 1){
moreChars = (char*) realloc(line, lineLen *=2);
if(moreChars == NULL){
puts("Error allocating for moreChars.");
free(moreChars);
exit(-69);
}
else
line = moreChars;
}
line[count - 1] = c;
}
这是我的代码。我的问题是当用户按(ctrl+d)结束循环时,他们必须输入两次,也就是说,要结束循环,用户必须输入(ctrl+d)(ctrl+d)。
示例输入:
hi there you guy dood (ctrl+d) (ctrl+d)
理想输入:
hi there you guy dood (ctrl+d)
更加明确地说:
我希望用户只需输入一次(ctrl+d)即可结束循环,但不知道为什么用户必须输入(ctrl+d)(ctrl+d)才能结束循环。
谢谢。
c
是一个int
。 - William Morrisecho abcde | ./example
(或者你的程序叫什么就用什么)来查看它是否按照你的期望工作。 - Carl Norum