回答編集履歴

1

マークダウン追加

2023/03/07 07:53

投稿

jimbe
jimbe

スコア12545

test CHANGED
@@ -9,8 +9,10 @@
9
9
  例えば
10
10
  <space>123<enter><space>ABC<space><enter>
11
11
  という標準入力を
12
+ ```c
12
13
  scanf("%d",&i); //int i
13
14
  scanf("%[^\n]%*c",s); //char s[N];
15
+ ```
14
16
  で処理した場合、
15
17
  1つ目の scanf で <space> がホワイトスペースとして無視、"123" が処理されて i が 123 になり、2つ目の scanf で 123 の後ろの <enter> が処理されて s が "" になり、標準入力には <space>ABC<space><enter> が残ります。
16
18
  もし 2つ目が scanf("%s",s) だったら、 123 の後ろの <enter> と ABC の前の <space> はホワイトスペースとして無視、 "ABC" が処理されて s は "ABC" となり、標準入力には <space><enter> が残ります。