72758


下記のコードで例えば `p` と入力すると、なぜか `dayo` が二回表示されてしまいます。  
do while の仕様はいったいどういうものなのでしょうか？

入力を含んだ処理を一回やったあとに含まない処理をもう一度しているようにみえます。  
よろしくお願いします。

環境：  
Ubuntu  
gcc 7.5.0

* * *

**出力結果:**

[code]

    p
    p dayo
    
    dayo
    
[/code]

**ソースコード:**

[code]

    int
    main(int argc, char *argv[])
    {
        char c;
    
        do
        {
            c = getchar();
            printf("%c dayo\n",c);
    
        } while (c != 'q');
    
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2020-12-19T07:33:18.540
72757
2020-12-20T05:30:43.873
2020-12-20T05:30:43.873
3068
40961
question
c
getchar()で1文字入力してもdo-whileが2回実行されてしまう


`p`を入力するとき、改行も入力していませんか？  
そうであれば、`p`と改行でwhileループが２回実行されています。  
`p`のあと`^d`(ctrl+d)を入力すれば`p`だけを入力することになり、想定した動作をするはずです。


CC BY-SA 4.0
2020-12-19T07:48:26.663
72758
2020-12-19T07:48:26.663
35558
72757
answer