1

次のコードの実行に問題があります。scanfメソッド フィーディング arrayに 5 文字を超える入力を提供するaと、残りの文字が配列に入り、b再び入力を提供することができなくなります。を使用してみfflush()ましたが、役に立ちませんでした。どうすれば修正できますか?

#include<stdio.h>

int main()
{
 char a[6];
 char b[20];

 printf("Enter any string :\n");
 scanf("%5s",a);

 printf("%s\n",a);

 fflush(stdin); 

 scanf("%s",b);
 printf("%s\n",b);

 return 0;
}
4

1 に答える 1

2

入力バッファをクリアするために fflush(stdin) を使用しないでください。未定義の動作です。Microsoft-CRT のみがこれをサポートしています。

#include<stdio.h>

int main()
{
 int c;
 char a[6];
 char b[20];

 printf("Enter any string :\n");
 scanf("%5s",a);

 printf("%s\n",a);

 while( (c=getchar())!=EOF && c!='\n' ); 

 scanf("%19s",b);
 printf("%s\n",b);

 return 0;
}
于 2012-09-07T09:11:59.697 に答える