-4

私のコードはこのように見えますが、解決できませんでした。それは一度でなければなりません

#include<stdio.h>

int main()
{
    char x ;

    printf("enter.\n");
    scanf("%c",&x);
    while(x!='D' && x!='d')
    {
        printf("diomond.\n");
        scanf("%c",&x);
    }
}
4

2 に答える 2

1

この行を変更

scanf("%c",&x);

scanf(" %c",&x); /* Notice the space in the format specifier */

2 回実行する理由は、文字を入力すると、次の反復で消費される入力ストリームに改行が残っているためです。フォーマット文字列の先頭にスペースを使用すると、scanf() に空白を無視するように指示されます。

于 2013-10-27T21:25:21.233 に答える
1

指定子の前にスペースを使用し%cます。これは、 を押した後\n、次の読み取りのために残された改行文字を使い果たすのに役立ちます。 scanfEnter

scanf(" %c",&x);  
  //   ^space

while(x!= 'D'&& x!='d')
{
   printf("diomond.\n");
   scanf(" %c",&x);
     //   ^space
}
于 2013-10-27T21:25:46.520 に答える