scanf関数用%sパラメータの場合の注意点
854 ワード
scanf("%s",str)を使用したところ、入力にスペースが含まれている場合、出力される結果はコードなどの目的の結果ではありません.
私たちがHello Worldを入力すると、画面にはHelloしか出力されません.このように入力すると、scanfがoの後ろのスペースにスキャンされると、strへの付与が終了し、後ろのWorldは無視されます.注意:後ろのWorldは依然としてstdinバッファにあり、getchar()で検証できます.
では、どうすればこのような問題を解決できるのでしょうか.
scanf()の代わりにgets()を使用できます.コードは次のとおりです.
scanf関数のより詳細は参照できますhttp://www.cnblogs.com/lovevivi/archive/2013/03/04/2942492.html
#include
int main(void)
{
char str[20];
printf(" : ");
scanf("%s", str);
printf(" : %s
", str);
return 0;
}
私たちがHello Worldを入力すると、画面にはHelloしか出力されません.このように入力すると、scanfがoの後ろのスペースにスキャンされると、strへの付与が終了し、後ろのWorldは無視されます.注意:後ろのWorldは依然としてstdinバッファにあり、getchar()で検証できます.
では、どうすればこのような問題を解決できるのでしょうか.
scanf()の代わりにgets()を使用できます.コードは次のとおりです.
#include
int main(void)
{
char str[20];
printf(" : ");
gets(str);
printf(" : %s
", str);
return 0;
}
scanf関数のより詳細は参照できますhttp://www.cnblogs.com/lovevivi/archive/2013/03/04/2942492.html