0

これは、「i」または「e」以外のキーを押したときにのみループを終了する単純な C コードですが、何らかの理由で「i」または「e」を押しても、プログラムは最後の else に入ります声明。なぜこれが起こっているのか本当にわかりません。 for の代わりに while を、scanf の代わりに getchar を使用しようとしましたが、それでも機能しません。「printf("$");」最後に、else ステートメントに到達したことを示します。なぜこれが起こっているのかを理解してくれる人はいますか?

for(;;)
{
    scanf("%c",&c);
    if(c=='i')
    {
        printf("insert\n");
    }
    else if(c=='e')
    {
        printf("elim\n");
    }
    else 
    {
        printf("$");
                    break;                        
    }

}
4

3 に答える 3

3

%cこれがin scanfのデフォルトの動作です。改行を認識して文字として扱います。それをオーバーライドするには、フォーマットの %c の前にスペースを入れます。

scanf(" %c",&c);
于 2013-06-18T14:01:04.517 に答える