回答編集履歴

2

修正

2020/08/15 20:18

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -6,11 +6,21 @@
6
6
 
7
7
 
8
8
 
9
+ 直接的な修正としては
10
+
11
+ `for (int i = 0; i < 256; i++)`を
12
+
13
+ `for (int i = 0, j = 0; i < 256; i++)`にして、
14
+
15
+ ループ内最初の、`int j = 0;`を消せばよいですが、
16
+
17
+
18
+
9
19
  カンマで区切ってその前とそれ以降を読み取りたい場合、
10
20
 
11
21
  `sscanf(str,"%[^,],%s",id,tag);`
12
22
 
13
- のようにすると良いです。
23
+ のようにすると一発済みます。
14
24
 
15
25
 
16
26
 

1

追加

2020/08/15 20:17

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -1,4 +1,4 @@
1
- `for`文のループの中で`j=0`としている為、`j`は常に0になっています。
1
+ `for`文のループの中で`j=0`としている為、`j`は常に`0`になっています。
2
2
 
3
3
  最後に、`,`に出会った時に`id[j] = '\0';`が行われるため、idは一文字目がNULLの空文字列になります。
4
4
 
@@ -11,3 +11,11 @@
11
11
  `sscanf(str,"%[^,],%s",id,tag);`
12
12
 
13
13
  のようにすると良いです。
14
+
15
+
16
+
17
+ > printf("%d", id);にすると、数字は表示されるので何かしらは保存されていると思われる。
18
+
19
+
20
+
21
+ ちなみにこれで出ているのは、`id`配列の先頭アドレスを10進数で表したものです。