回答編集履歴
4
説明追加
test
CHANGED
@@ -12,23 +12,19 @@
|
|
12
12
|
|
13
13
|
```
|
14
14
|
|
15
|
+
fgets() ではなく、``` gets_s(array, sizeof(array)); ``` でも良いはず。要は、いったん一行全部を array[] に読み込んでしまう、その後でゆっくり分解する。
|
15
16
|
|
16
17
|
|
17
18
|
|
19
|
+
scanf(), scanf_s() は、入力文字列を空白文字で区切ってしまうのが基本動作なので
|
18
20
|
|
19
|
-
|
21
|
+
"ABC 123 987" とタイプしても array[] には "ABC" しか入力されないと思う。そういうことは** printf デバッグで確かめれば済む**こと。
|
20
22
|
|
21
|
-
```C
|
22
23
|
|
23
|
-
sscanf_s(array, "%s %d %d", arr, 10, &num1, &num2);
|
24
24
|
|
25
|
-
|
25
|
+
----
|
26
26
|
|
27
|
-
を試してください(私は動作未確認)。
|
28
|
-
|
29
|
-
|
27
|
+
scanf_s() 等で文字列を入力する場合は、文字列を格納する配列の大きさを指定しなければなりません。**配列の名前の次に配列の大きさを指定する**ので sizeof(arr) を使うなら
|
30
|
-
|
31
|
-
sizeof(arr) を使うなら
|
32
28
|
|
33
29
|
```C
|
34
30
|
|
3
fgets() を使う
test
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
たぶん、こうすればよい。
|
2
|
+
|
3
|
+
```C
|
4
|
+
|
5
|
+
fgets(array, sizeof(array), stdin); // scanf_s() では不可
|
6
|
+
|
7
|
+
printf("array:[%s]\n", array); // デバッグプリント
|
8
|
+
|
9
|
+
sscanf_s(array, "%s %d %d", arr, sizeof(arr), &num1, &num2);
|
10
|
+
|
11
|
+
printf("%s %d %d", arr, num1, num2);
|
12
|
+
|
13
|
+
```
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
1
19
|
scanf_s() 等で文字列を入力する場合は、文字列を格納する配列の大きさを指定しなければなりません。**配列の名前の次に配列の大きさを指定する**ので
|
2
20
|
|
3
21
|
```C
|
2
ケアレスミス発見
test
CHANGED
@@ -17,3 +17,15 @@
|
|
17
17
|
sscanf_s(array, "%s %d %d", arr, sizeof(arr), &num1, &num2);
|
18
18
|
|
19
19
|
```
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
ケアレスミス・タイポ発見
|
24
|
+
|
25
|
+
```C
|
26
|
+
|
27
|
+
printf("&s %d %d", arr, num1, num2); // NG
|
28
|
+
|
29
|
+
printf("%s %d %d", arr, num1, num2); // OK
|
30
|
+
|
31
|
+
```
|
1
sizeof(arr) を使う例を追加
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
scanf_s() 等で文字列を入力する場合は、文字列を格納する配列の大きさを指定しなければなりません。
|
1
|
+
scanf_s() 等で文字列を入力する場合は、文字列を格納する配列の大きさを指定しなければなりません。**配列の名前の次に配列の大きさを指定する**ので
|
2
2
|
|
3
3
|
```C
|
4
4
|
|
@@ -8,4 +8,12 @@
|
|
8
8
|
|
9
9
|
を試してください(私は動作未確認)。
|
10
10
|
|
11
|
-
10 は配列 arr[] の大きさです。char arr[10]; だから 10 バイトです。
|
11
|
+
~~10 は配列 arr[] の大きさです。char arr[10]; だから 10 バイトです。~~←不要だった
|
12
|
+
|
13
|
+
sizeof(arr) を使うなら
|
14
|
+
|
15
|
+
```C
|
16
|
+
|
17
|
+
sscanf_s(array, "%s %d %d", arr, sizeof(arr), &num1, &num2);
|
18
|
+
|
19
|
+
```
|