質問編集履歴

4

コードの余白を削除

2019/07/11 08:50

投稿

hermes
hermes

スコア13

test CHANGED
File without changes
test CHANGED
@@ -260,14 +260,6 @@
260
260
 
261
261
  ```
262
262
 
263
- //
264
-
265
- // Created by Daisuke Amano on 2019-07-11.
266
-
267
- //
268
-
269
-
270
-
271
263
  #include <stdio.h>
272
264
 
273
265
  #include <stdlib.h>

3

再編集前のデータを再掲しました.

2019/07/11 08:50

投稿

hermes
hermes

スコア13

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,257 @@
6
6
 
7
7
 
8
8
 
9
- ### 該のソースコード
9
+ ### 該のソースコード
10
+
11
+ ```
12
+
13
+ #include <stdio.h>
14
+
15
+ #include <stdlib.h>
16
+
17
+ #include <string.h>
18
+
19
+
20
+
21
+ #define N 512 // 1行の最大文字数(バイト数)
22
+
23
+ #define X 30
24
+
25
+
26
+
27
+ int main(void) {
28
+
29
+ FILE *fp; // FILE型構造体
30
+
31
+ char fname[] = "test2.csv";
32
+
33
+ char str[N];
34
+
35
+ char *box[X];
36
+
37
+ char *p;
38
+
39
+
40
+
41
+ fp = fopen(fname, "r"); // ファイルを開く。失敗するとNULLを返す。
42
+
43
+ if(fp == NULL) {
44
+
45
+ printf("%s file not open!\n", fname);
46
+
47
+ return -1;
48
+
49
+ }
50
+
51
+
52
+
53
+
54
+
55
+ fgets(str, N, fp);
56
+
57
+
58
+
59
+ p = strtok(str, ",");
60
+
61
+
62
+
63
+ puts(p);
64
+
65
+
66
+
67
+ box[0] = p;
68
+
69
+
70
+
71
+ while(p!=NULL){
72
+
73
+ p = strtok(NULL,",");
74
+
75
+
76
+
77
+ if(p!=NULL){
78
+
79
+ int i = 1;
80
+
81
+ puts(p);
82
+
83
+ box[i] = p;
84
+
85
+ //printf("%s\n", box[i]);
86
+
87
+ i++;
88
+
89
+ }
90
+
91
+ }
92
+
93
+
94
+
95
+ printf("%s\n", str);
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+ fclose(fp); // ファイルを閉じる
106
+
107
+
108
+
109
+ for(int j=0; j<=X-1; j++){
110
+
111
+ printf("%c", *box[j]);
112
+
113
+ }
114
+
115
+
116
+
117
+ printf("\n");*/
118
+
119
+
120
+
121
+ return 0;
122
+
123
+ }
124
+
125
+ ```
126
+
127
+
128
+
129
+ ### 出力されるコード
130
+
131
+ ```
132
+
133
+ ./a.out
134
+
135
+ Settings
136
+
137
+ Toilet_Duration
138
+
139
+ Toilet_Duration
140
+
141
+ 0:01
142
+
143
+ 0:01
144
+
145
+ 0
146
+
147
+ 0
148
+
149
+ 0
150
+
151
+ 0
152
+
153
+ 0
154
+
155
+ 0
156
+
157
+ 0
158
+
159
+ 0
160
+
161
+ 0
162
+
163
+ 0
164
+
165
+ 0
166
+
167
+ 0
168
+
169
+ 0
170
+
171
+ 0
172
+
173
+ 0
174
+
175
+ 0
176
+
177
+ 0
178
+
179
+ 0
180
+
181
+ 0
182
+
183
+ 0
184
+
185
+ 0
186
+
187
+ 0
188
+
189
+ 0
190
+
191
+ 0
192
+
193
+ 0
194
+
195
+ 0
196
+
197
+ 0
198
+
199
+ 0
200
+
201
+ 0
202
+
203
+ 0
204
+
205
+ 0
206
+
207
+ 0
208
+
209
+ 0
210
+
211
+ 0
212
+
213
+ 0
214
+
215
+ 0
216
+
217
+ 0
218
+
219
+ 0
220
+
221
+ 0
222
+
223
+ 0
224
+
225
+ 0
226
+
227
+ 0
228
+
229
+ 0
230
+
231
+ 0
232
+
233
+ 0
234
+
235
+ 0
236
+
237
+ 0
238
+
239
+ 0
240
+
241
+ 0
242
+
243
+
244
+
245
+ 0
246
+
247
+
248
+
249
+ Settings
250
+
251
+ Segmentation fault: 11
252
+
253
+
254
+
255
+ ```
256
+
257
+
258
+
259
+ ### 編集後の該当のソースコード
10
260
 
11
261
  ```
12
262
 
@@ -132,7 +382,7 @@
132
382
 
133
383
  ```
134
384
 
135
- ### 出力されるコード
385
+ ### 編集後の出力されるコード
136
386
 
137
387
 
138
388
 

2

記載方法の間違いを修正しました.

2019/07/11 07:45

投稿

hermes
hermes

スコア13

test CHANGED
File without changes
test CHANGED
@@ -8,6 +8,8 @@
8
8
 
9
9
  ### 該当のソースコード
10
10
 
11
+ ```
12
+
11
13
  //
12
14
 
13
15
  // Created by Daisuke Amano on 2019-07-11.

1

ご指摘頂いた箇所を修正しました.

2019/07/11 07:22

投稿

hermes
hermes

スコア13

test CHANGED
File without changes
test CHANGED
@@ -2,32 +2,12 @@
2
2
 
3
3
  .csvファイルをJSON化するプログラムを制作しています.csvファイルの読み取りまでは上手くいったのですが,strtokとポインタの使い方がいまいち掴めず,データがboxに格納されているのか判断できません.
4
4
 
5
- .csvファイルを1行ごと読み込み,strtokを使用して分解,その分解したデータを格納するタイミングでセグメンテーションフォルト11発生します.
5
+ .csvファイルを1行ごと読み込み,strtokを使用して分解,その分解したデータを格納するタイミングで問題起きているようです.
6
-
7
-
8
-
9
- ### 発生している問題・エラーメッセージ
10
-
11
-
12
-
13
- ```
14
-
15
-
16
-
17
- Segmentation fault: 11
18
-
19
-
20
-
21
- ```
22
6
 
23
7
 
24
8
 
25
9
  ### 該当のソースコード
26
10
 
27
-
28
-
29
- ```C
30
-
31
11
  //
32
12
 
33
13
  // Created by Daisuke Amano on 2019-07-11.
@@ -46,7 +26,7 @@
46
26
 
47
27
  #define N 512 // 1行の最大文字数(バイト数)
48
28
 
49
- #define X 30
29
+ #define X 512
50
30
 
51
31
 
52
32
 
@@ -62,6 +42,8 @@
62
42
 
63
43
  char *p;
64
44
 
45
+ int i = 0;
46
+
65
47
 
66
48
 
67
49
  fp = fopen(fname, "r"); // ファイルを開く。失敗するとNULLを返す。
@@ -90,7 +72,9 @@
90
72
 
91
73
 
92
74
 
93
- box[0] = p;
75
+ box[i] = p;
76
+
77
+ i++;
94
78
 
95
79
 
96
80
 
@@ -102,12 +86,14 @@
102
86
 
103
87
  if(p!=NULL){
104
88
 
105
- int i = 1;
89
+
106
90
 
107
91
  puts(p);
108
92
 
109
93
  box[i] = p;
110
94
 
95
+ printf("%s\n", box[i]);
96
+
111
97
  i++;
112
98
 
113
99
  }
@@ -116,7 +102,7 @@
116
102
 
117
103
 
118
104
 
119
- printf("%s", str);
105
+ printf("%s\n", str);
120
106
 
121
107
 
122
108
 
@@ -130,11 +116,7 @@
130
116
 
131
117
 
132
118
 
133
- for(int j=0; j<=X-1; j++){
134
-
135
- printf("%c", *box[j]);
119
+ printf("%c\n", *box[1]);
136
-
137
- }
138
120
 
139
121
 
140
122
 
@@ -162,61 +144,119 @@
162
144
 
163
145
  Toilet_Duration
164
146
 
147
+ Toilet_Duration
148
+
165
149
  0:01
166
150
 
167
- 0
168
-
169
- 0
170
-
171
- 0
172
-
173
- 0
174
-
175
- 0
176
-
177
- 0
178
-
179
- 0
180
-
181
- 0
182
-
183
- 0
184
-
185
- 0
186
-
187
- 0
188
-
189
- 0
190
-
191
- 0
192
-
193
- 0
194
-
195
- 0
196
-
197
- 0
198
-
199
- 0
200
-
201
- 0
202
-
203
- 0
204
-
205
- 0
206
-
207
- 0
208
-
209
- 0
210
-
211
- 0
212
-
213
- 0
214
-
215
- 0
216
-
217
-
218
-
219
- Segmentation fault: 11
151
+ 0:01
152
+
153
+ 0
154
+
155
+ 0
156
+
157
+ 0
158
+
159
+ 0
160
+
161
+ 0
162
+
163
+ 0
164
+
165
+ 0
166
+
167
+ 0
168
+
169
+ 0
170
+
171
+ 0
172
+
173
+ 0
174
+
175
+ 0
176
+
177
+ 0
178
+
179
+ 0
180
+
181
+ 0
182
+
183
+ 0
184
+
185
+ 0
186
+
187
+ 0
188
+
189
+ 0
190
+
191
+ 0
192
+
193
+ 0
194
+
195
+ 0
196
+
197
+ 0
198
+
199
+ 0
200
+
201
+ 0
202
+
203
+ 0
204
+
205
+ 0
206
+
207
+ 0
208
+
209
+ 0
210
+
211
+ 0
212
+
213
+ 0
214
+
215
+ 0
216
+
217
+ 0
218
+
219
+ 0
220
+
221
+ 0
222
+
223
+ 0
224
+
225
+ 0
226
+
227
+ 0
228
+
229
+ 0
230
+
231
+ 0
232
+
233
+ 0
234
+
235
+ 0
236
+
237
+ 0
238
+
239
+ 0
240
+
241
+ 0
242
+
243
+ 0
244
+
245
+ 0
246
+
247
+ 0
248
+
249
+ 0
250
+
251
+
252
+
253
+ 0
254
+
255
+
256
+
257
+ Settings
258
+
259
+ T
220
260
 
221
261
 
222
262