1
while(1)
{
    if(i == 6)
        break;
    temp[i] = getchar();
    putchar(temp[i]);
    i++;
}

この方法で getchar を使用する必要があるときはいつでも、Enter も入力の 1 つとして受け入れるため、6 文字ではなく 3 文字しか入力できません。なぜ getchar は入力の 1 つとして入力を取るのですか? これを回避する方法は?

入力:

1
2
3

このループの後、押された 3 つのリターンは temp[1]、temp[3]、および temp[5] への 3 つの入力と見なされるためです。

4

5 に答える 5

5

空白文字をチェックし、追加/カウントしないでください。getchar() は、ヒットしたすべての文字 (改行とスペースを含む) を返します。

while(i < 6)
{
    temp[i] = getchar();
    if (isspace(temp[i]))
        continue;

    putchar(temp[i]);
    i++;
}
于 2013-12-23T10:22:21.037 に答える
0

このメソッドはどうですか。getchar() を 2 回使用できます。このような、

while(1)
{
    if(i == 6)
        break;
    temp[i] = getchar();
    getchar();
    putchar(temp[i]);
    i++;
}
于 2013-12-24T02:11:36.807 に答える