質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

1838閲覧

c言語 scanf 入力 バッファ

fumi6328

総合スコア15

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2019/04/16 13:51

c言語のscanf関数がよくわかりません。
以下のコードで(1)は入力バッファに改行が残っているため、
変数aで改行を読み取ってしまっているのはわかります。
しかし(2)では入力バッファに改行が残っているのにも関わらず、
正常に入力できるのはなぜでしょう?読み飛ばされないまでも
b[0]に改行が入るような気がするのですが...
また、この出力ではないのですが(3)に関して、
%dでもバッファに改行があるの関わらず、それを
読み取らないのはどうしてでしょうか?

説明がわかりにくくてすいません。
回答よろしくお願いしますm(__)m

C

1#include <stdio.h> 2 3int main(){ 4 char x,a,b[10]; 5 int c; 6 7 //(1) 8 printf("x: "); scanf("%c",&x); 9 printf("a: "); scanf("%c",&a); 10 printf("\n"); 11 12 //(2) 13 printf("x: "); scanf("%c",&x); 14 printf("b: "); scanf("%s",b); 15 printf("\n"); 16 17 //(3) 18 printf("x: "); scanf("%c",&x); 19 printf("c: "); scanf("%d",&c); 20 printf("\n"); 21 22 printf("c: ",&x); scanf("%c",&x); 23 24 return 0; 25} 26 27//////////////出力///////////////// 28x: 1 29a: 30x: 2 31b: 3 32 33x: c: 4 34 35c:

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

scanf()での %s は、最初の空白文字(空白、改行等)を読み捨てるようです。
scanf()
そのため、バッファ内に残った改行文字は捨てられます。

残っているが空白でない文字の場合、読み込まれます。

投稿2019/04/16 14:47

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

キーボードからの入力にscanfは使わない方が良いです。fgets+sscanfを使いましょう。

しかし(2)では

%sは、前の空白文字(空白、タブ、改行)を読み飛ばすからです。

(3)に関して、

(2)で%sの入力時の最後の改行は残っていて、(3)のxに入ります。

投稿2019/04/16 14:44

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fumi6328

2019/04/16 14:54

%dでも前の空白文字は読み飛ばすのでしょうか?
fumi6328

2019/04/19 05:29

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問