2016-10-02 16 views
-1

scanfのフォーマット指定子の後のスペースの意味を知りたかったのです。 scanfにはスペースに関する多くの投稿があり、その多くは%cの前のスペースについて話します。以下のコードでは、最初のscanfが戻るための2文字目を入力する必要があります。 Enterキーを押すだけでscanfが中断されることはありません。この2番目の文字のために、文字列を読み取るための2番目のscanfも影響を受けます。 %cの後のスペースは、文字の後に入力されたすべての空白を無視し、次の文字まで待つと言うことはできますか?しかし、なぜ "Enter"キーが文字そのものとは考えられないのですか?フォーマット指定子の後のscanfのスペースとフォーマット指定子の前のスペース( "%c"と "%c")

char str[50]; 
char c; 
printf("Enter the Character:"); 
scanf("%c ",&c); 
printf("Char read is: %c",c); 
printf("Enter the string:"); 
scanf("%s",str); 
printf("%s", str); 

答えて

1

あなたは"%c"後に末尾のスペースを使用する場合は、scanfが返すことができるように次の非ホワイトスペースを見つける必要があります。もし存在しなければ、scanfは永遠にブロックされます。

+0

なぜEnterキーが空白ではないと思われるのですか? – Rajesh

+1

@Rajesh [scanf](http://en.cppreference.com/w/c/io/fscanf)は、「\ n」の[空白文字](http://en.cppreference .com/w/c/string/byte/isspace)... –

関連する問題