scanf関数用%sパラメータの場合の注意点

854 ワード

scanf("%s",str)を使用したところ、入力にスペースが含まれている場合、出力される結果はコードなどの目的の結果ではありません.
 
#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