回答編集履歴

2

追記

2021/12/23 00:48

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -1,3 +1,57 @@
1
1
  "%s" の代わりに、"%*s" と書くか、" 緯度:" と書くか、" %*[^ ]" と書くか。
2
2
 
3
3
  ドキュメントを見て、いろいろ試してみてください。
4
+
5
+
6
+
7
+ **追記**
8
+
9
+ scanf(書式、引数...) において、引数は格納先へのポインタです。
10
+
11
+
12
+
13
+ 書式は、複数の指令を並べたものです。
14
+
15
+
16
+
17
+ 指令には、次の 3種類があります。
18
+
19
+ ・空白類文字 (isspace関数で規定される文字 ' ', '\t', '\n', '\v', '\f', '\r')
20
+
21
+ ・通常の文字
22
+
23
+ ・%で始まる変換指定
24
+
25
+
26
+
27
+ 指令の空白類文字は、入力の 0個以上の空白類文字を読み飛ばします。
28
+
29
+
30
+
31
+ 指令の通常文字は、それと一致する入力文字を読み飛ばします。
32
+
33
+
34
+
35
+ 変換指定は、%d, %s, %c などですが、%c と %[ と %n 以外は、
36
+
37
+ 入力の空白類文字を読み飛ばした後、指定した変換処理を行います。
38
+
39
+
40
+
41
+ scanf("A=%d", &n); なら、"A"、"="、"%d" の 3つの指令があり、
42
+
43
+ 入力の "A=45" や "A= 45" で、n に 45 を読み込めますが、
44
+
45
+ 入力の "45" や "A = 45" では、n に 45 を読み込めません。
46
+
47
+
48
+
49
+ %d は数字の列を読み込んで数値に変換しますが、
50
+
51
+ 数字の列の終わりを知るために、1つ余分に文字を読み込みます。
52
+
53
+ しかし、その文字は入力バッファに押し戻されて、次の入力に使用されます。
54
+
55
+
56
+
57
+ 以上の scanf の基本的な機能を理解できましたか?

1

訂正

2021/12/23 00:48

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -1,3 +1,3 @@
1
- "%s" の代わりに、"%*s" と書くか、" 緯度:" と書くか、" %[^ ]" と書くか。
1
+ "%s" の代わりに、"%*s" と書くか、" 緯度:" と書くか、" %*[^ ]" と書くか。
2
2
 
3
3
  ドキュメントを見て、いろいろ試してみてください。