可能性の重複:
How do you allow spaces to be entered using scanf?Cのscanfの
のprintf( "本のタイトル\ nの中でキー入力してください"); scanf( "%s"、bookname);このようなデータの内部
iは: - Cプログラミング
が、なぜこのようなデータ出力: - Cは、プログラミング(文字列)を失いますか?
なぜ
ありがとうございます。
可能性の重複:
How do you allow spaces to be entered using scanf?Cのscanfの
のprintf( "本のタイトル\ nの中でキー入力してください"); scanf( "%s"、bookname);このようなデータの内部
iは: - Cプログラミング
が、なぜこのようなデータ出力: - Cは、プログラミング(文字列)を失いますか?
なぜ
ありがとうございます。
まあbookname
の使用fgets()
は ポイントは、最初の空白文字でこの形式の停止でそのscanf
です;-)文字のいくつかの種類です。
異なる形式の文字列を使用できますが、この場合はおそらくfgets
を使用することをお勧めします。
scanf
は、実際には「フォーマット済み」入力に使用する必要があります。
%s
変換指定子を使用すると、scanf
は最初の空白文字で停止します。あなたは空白文字を読むことができるようにする必要がある場合は、そのよう
bookname
にそれを格納します
scanf("%[^\n]", bookname);
として、%[
変換指定子を使用する必要がありますどちらかあなたは変換指定子でbooknameの最大長を指定する必要があります。例えばbooknameがNULLターミネータを数える30文字のための部屋を持っている場合、あなたはfgets()
を使用することができ、そうでない場合
scanf("%29[^\n]", bookname);
を書く必要があります。
fgets(bookname, sizeof bookname, stdin);
は、私は個人的に、
fgets()
ソリューションを好みます。
非常に感謝します。良い情報:) – user531119
「bookname」とは何ですか? – khachik