1

getchar() は、ユーザーが入力した行の最初の文字を取得し、次に次の文字を取得するだけの関数であることを知っていgetchar()ました。コードの最後に行を入力すると、ユーザーが入力するまでプログラムを待機させるためのものです。情報を表示するときにコンソールを閉じないようにします。

なぜこのコード行を使用するのでしょうか?

while(getchar()!='\n');

行の終わりが見つかるまで行のすべての文字を読み取ることを知っていたので、ループが壊れます..右.? しかし、なぜこれが役立つのでしょうか? このコード行を書かないとどうなるでしょうか?

while((ch=fgetc(stream))!=EOF)
{
    putchar(ch);
    cha++;
    if(ch=='\n')
    {
        lines++;
        printf("Line %i is detected\n\n",lines);
        if(lines==NEW_LINE)
        {
        lines=0;
        while (getchar!='\n'); **//Here is my question**
        }
    }
}
4

2 に答える 2

2

このコードは出力をページ分割しているようです。

ストリームから一度に 1 文字を読み取り、putcharそれを に出力するために使用しますstdout。次に、その文字が改行だった場合は、行数を増やします。そのカウントが定義された定数に達しSTOP_LINEた場合、カウントはリセットされ、

while(getchar()!='\n');

ユーザーが Return を押すのを待ちます。その後、ループが続行されます。

于 2011-09-13T15:37:21.707 に答える
0
while(getchar()!='\n');

行の終わりが見つかるまで、行のすべての文字を読み取ります。

ただし、これを行うためのより効率的な方法があります (バッファリングされたストリームを使用するか、可能であればより大きなチャンクを読み取るなど)。

于 2011-09-13T15:33:36.203 に答える