3
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) 才能结束循环。

谢谢。

4

1 回答 1

0

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

于 2013-01-26T21:09:02.743 回答