2010-12-05 9 views
2

可能性の重複:
How do you allow spaces to be entered using scanf?Cのscanfの

のprintf( "本のタイトル\ nの中でキー入力してください"); scanf( "%s"、bookname);このようなデータの内部

iは: - Cプログラミング

が、なぜこのようなデータ出力: - C

は、プログラミング(文字列)を失いますか?

なぜ

ありがとうございます。

+0

「bookname」とは何ですか? – khachik

答えて

4

無愛想代わりscanf()

+2

これは質問には答えません。これは「理由」です。ありがとう! – caf

+0

ありがとう!それは – user531119

0

まあbooknameの使用fgets()は ポイントは、最初の空白文字でこの形式の停止でそのscanfです;-)文字のいくつかの種類です。

異なる形式の文字列を使用できますが、この場合はおそらくfgetsを使用することをお勧めします。

scanfは、実際には「フォーマット済み」入力に使用する必要があります。

18

%s変換指定子を使用すると、scanfは最初の空白文字で停止します。あなたは空白文字を読むことができるようにする必要がある場合は、そのよう

するものの、次の改行文字にすべてを読み、 booknameにそれを格納します
scanf("%[^\n]", bookname); 

として、%[変換指定子を使用する必要がありますどちらかあなたは変換指定子でbooknameの最大長を指定する必要があります。例えばbooknameがNULLターミネータを数える30文字のための部屋を持っている場合、あなたはfgets()を使用することができ、そうでない場合

scanf("%29[^\n]", bookname); 

を書く必要があります。

fgets(bookname, sizeof bookname, stdin); 

は、私は個人的に、 fgets()ソリューションを好みます。

+0

非常に感謝します。良い情報:) – user531119