5

私はCの初心者ですので、この質問がばかげているか、奇妙な質問をしている場合はご容赦ください。

私はCprimerplusを読んでおり、第8章の例の1つは、ユーザーが入力したかどうかをテストするループですa newline character or not。これは理解できませんでした。

コードが短いので、以下に示します。

int main(void)
{
    int ch; /* character to be printed */
    int rows, cols; /* number of rows and columns */
    printf("Enter a character and two integers:\n");
    while ((ch = getchar()) != '\n')
    {
        if (scanf("%d %d",&rows, &cols) != 2)
            break;
        display(ch, rows, cols);
        while (getchar() != '\n')
            continue;
        printf("Enter another character and two integers;\n");
        printf("Enter a newline to quit.\n");
    }
    printf("Bye.\n");
    return 0;
}
void display(char cr, int lines, int width) // the function to preform the printing of the arguments being passed 

私が理解していないことはここにあります:

while (getchar() != '\n')
                continue;
            printf("Enter another character and two integers;\n");
            printf("Enter a newline to quit.\n");

まず第一にwhile (getchar() != '\n')、最初のchが正しく入力されたテストですか?第二に、それが本当なら、なぜcontinueはprintfステートメントをスキップせずに最初のwhileに行くのですか?それはそれが何をすべきかではありませんか?

Tnx

4

4 に答える 4

7

ステートメントの後に中括弧がないためwhile、ループには次の行のみが含まれます。したがって、continue改行文字が見つかるまでwhileループを続行し、その後、printfステートメントの実行を続行します。

これと同等です:

 while (getchar() != '\n')
 {
    continue;
 }
于 2013-01-31T13:33:20.587 に答える
1

継続は2つの-sのwhile直前に適用されるため、入力すると、ラインに戻っている間に最も内側から出ます。printf\n

printf("Enter another character and two integers;\n");
于 2013-01-31T13:32:37.193 に答える
0

は最もcontinue近いwhileループに適用されます。

while (stuff)
  continue;

と同じです

while (stuf);

(セミコロンに注意してください)。

「条件が偽になるまでループを続ける」と言うだけです。

于 2013-01-31T13:34:35.363 に答える
0

ここで、while()ループはcontinueステートメントのみに関連付けられています。したがって、printfステートメントとは関係がありません.........。

于 2013-02-04T18:13:10.880 に答える