继续循环,直到char == EOF

时间:2013-01-26 21:04:37

标签: c string

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)。

示例输入:

  

你好兄弟(ctrl + d)(ctrl + d)

理想输入:

  

你好吗(ctrl + d)

更清楚地说明:

我希望用户只需输入(ctrl + d)一次即可结束循环,并且无法弄清楚为什么要使用(ctrl + d)(ctrl + d)来结束循环。< / p>

感谢。

1 个答案:

答案 0 :(得分:0)

c如何定义? fgetc()返回一个int,EOF是一个int。如果c是char,则它们将不匹配。