質問編集履歴

5

正常動作したコードと結果

2018/01/07 09:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -10,16 +10,6 @@
10
10
 
11
11
  ```ここに言語を入力
12
12
 
13
- コード
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
13
  #include <stdio.h>
24
14
 
25
15
  #include <stdlib.h>
@@ -28,7 +18,7 @@
28
18
 
29
19
 
30
20
 
31
- #define Max 256
21
+ #define Max 256
32
22
 
33
23
 
34
24
 
@@ -42,9 +32,9 @@
42
32
 
43
33
  {
44
34
 
45
- FILE *fp1,*fp2 ;
35
+ FILE *fp1,*fp2 ;
46
-
36
+
47
- char line[Max]={0}; // 検索対象文字列を読み込む配列
37
+ char line[Max]={0}; // 検索対象文字列を読み込む配列
48
38
 
49
39
  char line2[Max]={0};
50
40
 
@@ -58,183 +48,183 @@
58
48
 
59
49
  char *ptr;
60
50
 
61
-
62
-
51
+
52
+
63
- if(!(fp1 = fopen(dtfile, "r"))){
53
+ if(!(fp1 = fopen(dtfile, "r"))){
64
54
 
65
55
  printf("ファイルを開くことができません\n");
66
56
 
67
57
  exit(1);
68
58
 
59
+ }
60
+
61
+ if ((fp2 = fopen(dtfile2, "w")) == NULL) {
62
+
63
+ fprintf(stderr, "ファイルのオープンに失敗しました.\n");
64
+
65
+ exit(1);
66
+
69
67
  }
70
68
 
69
+ printf("修正する名前を検索します。修正する名前を入力して下さい。\n");
70
+
71
+
72
+
73
+ scanf("%s",buff);
74
+
71
- if ((fp2 = fopen(dtfile2, "w")) == NULL) {
75
+ //printf("buff=%s\n" ,buff );
72
-
76
+
77
+
78
+
73
- fprintf(stderr, "ファイルのオープンに失敗しました.\n");
79
+ printf("修正前のdata_tel3.txt\n");
80
+
74
-
81
+ //linesから1行ずつ取り出す。
82
+
83
+ while(fgets(line, 256, fp1) != NULL){
84
+
75
- return -1;
85
+ printf( "%s" ,line );
76
86
 
77
87
  }
78
88
 
79
- printf("修正する名前を検索します。修正する名前を入力して下さい。\n");
80
-
81
-
82
-
83
- scanf("%s",buff);
89
+ fseek(fp1, 0, SEEK_SET);
84
-
85
- //printf("buff=%s\n" ,buff );
90
+
86
-
87
-
88
-
89
- printf("修正前のdata_tel3.txt\n");
90
-
91
- //linesから1行ずつ取り出す。
92
-
93
- while(fgets(line, 256, fp1) != NULL){
91
+ while(fgets(line, 256, fp1) != NULL){
92
+
94
-
93
+ ptr=strstr(line,buff);
94
+
95
+ if(ptr){
96
+
95
- printf( "%s" ,line );
97
+ printf( "\n\n" );
98
+
99
+ //氏名を修正する。
100
+
101
+ printf("%sの名前を修正する。\n",ptr);
102
+
103
+ scanf("%s",buf1);
104
+
105
+ strtok(buf1,"\n");
106
+
107
+ //電話番号を修正する。
108
+
109
+ printf("%sの電話番号を修正する。\n",ptr);
110
+
111
+ scanf("%s",buf2);
112
+
113
+ strtok(buf2,"\n");
114
+
115
+
116
+
117
+ sprintf(line,"%-11s,%s\n",buf1,buf2);
118
+
119
+ //書式付き出力を文字列bufに格納する
120
+
121
+ //data_tmp.txtに修正したデータを保存する
122
+
123
+ fputs(line,fp2);
124
+
125
+
126
+
127
+ }else{
128
+
129
+ //data_tmp.txtに修正する前のデータを保存する
130
+
131
+ // 書き込み
132
+
133
+ fputs(line,fp2);
134
+
135
+ count++;
136
+
137
+ if ( count < 0 ) {
138
+
139
+ count=fprintf(stderr, "ファイルの書込みに失敗しました.\n");
140
+
141
+ exit(1);
142
+
143
+ }
144
+
145
+ }
146
+
147
+ }
148
+
149
+ fclose(fp2);
150
+
151
+ fclose(fp1);
96
152
 
97
153
 
98
154
 
99
- ptr=strstr(line,buff);
100
-
101
- if(ptr){
102
-
103
- printf( "\n" );
155
+ printf("\n\n");
104
-
105
-
106
-
107
- //氏名を修正する。
156
+
108
-
109
- printf("修正する名前を入力して下さい。\n");
157
+ fp2 = fopen(dtfile2, "r");
110
-
111
- scanf("%s",buf1);
158
+
112
-
113
- strtok(buf1,"\n");
159
+ fp1 = fopen(dtfile, "w");
114
-
115
- //電話番号を修正する。
160
+
116
-
161
+
162
+
117
- printf("修正する電話番号を入力して下さい。\n");
163
+ printf( "一時ファイルdata_tmp2.txt\n" );
164
+
118
-
165
+ while(fgets(line2, 256, fp2) != NULL){
166
+
119
- scanf("%s",buf2);
167
+ printf( "%s" ,line2 );
120
-
121
- strtok(buf2,"\n");
168
+
122
-
123
- sprintf(line,"%-13s,%s\n",buf1,buf2);
169
+
124
-
125
-
126
-
127
- //data_tmp.txtに修正したデータを保存する
170
+
128
-
129
- fputs(line,fp2);
130
-
131
-
132
-
133
- }else{
134
-
135
- //data_tmp.txtに修正する前のデータを保存する
136
-
137
- // 書き込み
171
+ // 書き込み
138
-
172
+
139
- fputs(line,fp2);
173
+ fputs(line2,fp1);
140
-
174
+
141
- count++;
175
+ count++;
142
-
176
+
143
- if ( count < 0 ) {
177
+ if ( count < 0 ) {
144
-
178
+
145
- count=fprintf(stderr, "ファイルの書込みに失敗しました.\n");
179
+ count=fprintf(stderr, "ファイルの書込みに失敗しました.\n");
146
-
180
+
147
- return -1;
181
+ exit(1);
148
-
149
- }
150
182
 
151
183
  }
152
184
 
153
185
  }
154
186
 
155
- fclose(fp2);
156
-
157
187
  fclose(fp1);
158
188
 
159
-
160
-
161
189
  printf("\n\n");
162
190
 
163
- fp2 = fopen(dtfile2, "r");
164
-
165
- fp1 = fopen(dtfile, "w");
191
+ fp1 = fopen(dtfile, "r");
166
-
167
-
168
-
192
+
193
+
194
+
169
- printf( "一時ファイルdata_tmp2.txt\n" );
195
+ printf( "修正後のdata_tel3.txt\n");
170
-
196
+
171
- while(fgets(line2, 256, fp2) != NULL){
197
+ while(fgets(line, 256, fp1) != NULL){
172
-
198
+
173
- printf( "%s" ,line2 );
199
+ printf( "%s" ,line );
174
-
175
-
176
-
177
- // 書き込み
200
+
178
-
179
- fputs(line2,fp1);
180
-
181
- count++;
182
-
183
- if ( count < 0 ) {
184
-
185
- count=fprintf(stderr, "ファイルの書込みに失敗しました.\n");
186
-
187
- return -1;
188
-
189
- }
201
+ }
190
-
202
+
203
+
204
+
191
- }
205
+ // ファイルクローズ
192
206
 
193
207
  fclose(fp1);
194
208
 
195
- printf("\n\n");
196
-
197
- fp1 = fopen(dtfile, "r");
198
-
199
-
200
-
201
- printf( "修正後のdata_tel3.txt\n");
202
-
203
- while(fgets(line, 256, fp1) != NULL){
204
-
205
- printf( "%s" ,line );
206
-
207
- }
208
-
209
-
210
-
211
- // ファイルクローズ
212
-
213
- fclose(fp1);
214
-
215
- fclose(fp2);
209
+ fclose(fp2);
216
-
217
-
218
-
210
+
211
+
212
+
219
- return 0;
213
+ return 0;
220
214
 
221
215
  }
222
216
 
223
217
 
224
218
 
225
- //実行結果
219
+ 実行結果
226
220
 
227
221
  naka@naka ~/kadai/kadai9-8
228
222
 
229
- $ gcc -o data_amend6 data_amend6.c -Wall
223
+ $ gcc -o data_amend2 data_amend2.c -Wall
230
-
231
-
232
-
224
+
233
- naka@naka ~/kadai/kadai9-8
225
+ nakamura@nakamura ~/kadai/kadai9-8
234
-
226
+
235
- $ data_amend6
227
+ $ data_amend2
236
-
237
- $ data_amend6
238
228
 
239
229
  修正する名前を検索します。修正する名前を入力して下さい。
240
230
 
@@ -244,17 +234,45 @@
244
234
 
245
235
  sachiko ,090-0809
246
236
 
247
- naka ,090-7788
237
+ naka ,090-0787
238
+
248
-
239
+ kiyoko ,090-9999
240
+
249
-
241
+ satou ,090-3214
242
+
250
-
243
+ kinosita ,090-8769
244
+
245
+ yamada ,090-4325
246
+
247
+ itou ,080-6354
248
+
249
+ sudou ,090-3333
250
+
251
+ kitou ,080-1342
252
+
253
+
254
+
255
+ naka ,090-0787
256
+
251
- 修正する名前を入力して下さい
257
+ の名前を修正する。
252
258
 
253
259
  nabe
254
260
 
261
+ naka ,090-0787
262
+
255
- 修正する電話番号を入力して下さい
263
+ 電話番号を修正する
256
-
264
+
257
- 090-6677
265
+ 090-0007
266
+
267
+
268
+
269
+
270
+
271
+ 一時ファイルdata_tmp2.txt
272
+
273
+ sachiko ,090-0809
274
+
275
+ nabe ,090-0007
258
276
 
259
277
  kiyoko ,090-9999
260
278
 
@@ -272,11 +290,11 @@
272
290
 
273
291
 
274
292
 
275
- 一時ファイルdata_tmp2.txt
293
+ 修正後のdata_tel3.txt
276
294
 
277
295
  sachiko ,090-0809
278
296
 
279
- nabe ,090-6677
297
+ nabe ,090-0007
280
298
 
281
299
  kiyoko ,090-9999
282
300
 
@@ -294,34 +312,6 @@
294
312
 
295
313
 
296
314
 
297
- 修正後のdata_tel3.txt
298
-
299
- sachiko ,090-0809
300
-
301
- nabe ,090-6677
302
-
303
- kiyoko ,090-9999
304
-
305
- satou ,090-3214
306
-
307
- kinosita ,090-8769
308
-
309
- yamada ,090-4325
310
-
311
- itou ,080-6354
312
-
313
- sudou ,090-3333
314
-
315
- kitou ,080-1342
316
-
317
- naka@naka ~/kadai/kadai9-8
318
-
319
- $
320
-
321
-
322
-
323
-
324
-
325
315
 
326
316
 
327
317
 

4

事項結果を実行結果に修正

2018/01/07 09:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -222,7 +222,7 @@
222
222
 
223
223
 
224
224
 
225
- //事項結果
225
+ //実行結果
226
226
 
227
227
  naka@naka ~/kadai/kadai9-8
228
228
 

3

コードの事項結果を実行結果の書き間違い修正

2018/01/07 06:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes

2

コードと実行結果の修正

2018/01/07 06:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,13 @@
12
12
 
13
13
  コード
14
14
 
15
- //data_amend4.c
15
+
16
+
17
+
18
+
19
+
20
+
21
+
16
22
 
17
23
  #include <stdio.h>
18
24
 
@@ -20,13 +26,9 @@
20
26
 
21
27
  #include <string.h>
22
28
 
23
- //#include <sys\stat.h>
29
+
24
-
25
-
26
-
27
- #define N 256
30
+
28
-
29
- #define Max 100
31
+ #define Max 256
30
32
 
31
33
 
32
34
 
@@ -36,205 +38,289 @@
36
38
 
37
39
 
38
40
 
39
- void amend(); // データの修正
40
-
41
-
42
-
43
41
  int main(void)
44
42
 
45
43
  {
46
44
 
45
+ FILE *fp1,*fp2 ;
46
+
47
+ char line[Max]={0}; // 検索対象文字列を読み込む配列
48
+
49
+ char line2[Max]={0};
50
+
51
+ char buff[256]; //検索文字列
52
+
53
+ char buf1[256];
54
+
55
+ char buf2[256];
56
+
47
- data_amend();
57
+ int count=0;
58
+
48
-
59
+ char *ptr;
60
+
61
+
62
+
49
-
63
+ if(!(fp1 = fopen(dtfile, "r"))){
64
+
50
-
65
+ printf("ファイルを開くことができません\n");
66
+
67
+ exit(1);
68
+
69
+ }
70
+
71
+ if ((fp2 = fopen(dtfile2, "w")) == NULL) {
72
+
73
+ fprintf(stderr, "ファイルのオープンに失敗しました.\n");
74
+
75
+ return -1;
76
+
77
+ }
78
+
79
+ printf("修正する名前を検索します。修正する名前を入力して下さい。\n");
80
+
81
+
82
+
83
+ scanf("%s",buff);
84
+
85
+ //printf("buff=%s\n" ,buff );
86
+
87
+
88
+
89
+ printf("修正前のdata_tel3.txt\n");
90
+
91
+ //linesから1行ずつ取り出す。
92
+
93
+ while(fgets(line, 256, fp1) != NULL){
94
+
95
+ printf( "%s" ,line );
96
+
97
+
98
+
99
+ ptr=strstr(line,buff);
100
+
101
+ if(ptr){
102
+
103
+ printf( "\n" );
104
+
105
+
106
+
107
+ //氏名を修正する。
108
+
109
+ printf("修正する名前を入力して下さい。\n");
110
+
111
+ scanf("%s",buf1);
112
+
113
+ strtok(buf1,"\n");
114
+
115
+ //電話番号を修正する。
116
+
117
+ printf("修正する電話番号を入力して下さい。\n");
118
+
119
+ scanf("%s",buf2);
120
+
121
+ strtok(buf2,"\n");
122
+
123
+ sprintf(line,"%-13s,%s\n",buf1,buf2);
124
+
125
+
126
+
127
+ //data_tmp.txtに修正したデータを保存する
128
+
129
+ fputs(line,fp2);
130
+
131
+
132
+
133
+ }else{
134
+
135
+ //data_tmp.txtに修正する前のデータを保存する
136
+
137
+ // 書き込み
138
+
139
+ fputs(line,fp2);
140
+
141
+ count++;
142
+
143
+ if ( count < 0 ) {
144
+
145
+ count=fprintf(stderr, "ファイルの書込みに失敗しました.\n");
146
+
147
+ return -1;
148
+
149
+ }
150
+
151
+ }
152
+
153
+ }
154
+
155
+ fclose(fp2);
156
+
157
+ fclose(fp1);
158
+
159
+
160
+
161
+ printf("\n\n");
162
+
163
+ fp2 = fopen(dtfile2, "r");
164
+
165
+ fp1 = fopen(dtfile, "w");
166
+
167
+
168
+
169
+ printf( "一時ファイルdata_tmp2.txt\n" );
170
+
171
+ while(fgets(line2, 256, fp2) != NULL){
172
+
173
+ printf( "%s" ,line2 );
174
+
175
+
176
+
177
+ // 書き込み
178
+
179
+ fputs(line2,fp1);
180
+
181
+ count++;
182
+
183
+ if ( count < 0 ) {
184
+
185
+ count=fprintf(stderr, "ファイルの書込みに失敗しました.\n");
186
+
187
+ return -1;
188
+
189
+ }
190
+
191
+ }
192
+
193
+ fclose(fp1);
194
+
195
+ printf("\n\n");
196
+
197
+ fp1 = fopen(dtfile, "r");
198
+
199
+
200
+
201
+ printf( "修正後のdata_tel3.txt\n");
202
+
203
+ while(fgets(line, 256, fp1) != NULL){
204
+
205
+ printf( "%s" ,line );
206
+
207
+ }
208
+
209
+
210
+
211
+ // ファイルクローズ
212
+
213
+ fclose(fp1);
214
+
215
+ fclose(fp2);
216
+
217
+
218
+
51
- return 0;
219
+ return 0;
52
220
 
53
221
  }
54
222
 
55
223
 
56
224
 
57
- void data_amend(struct address* head)
58
-
59
- {
60
-
61
-  FILE *fp1,*fp2 ;
62
-
63
- char line[Max]={0}; // 検索対象文字列を読み込む配列
64
-
65
- char line2[Max]={0};
66
-
67
- char buff[256]; //検索文字列
68
-
69
- int count=0;
70
-
71
- char *ptr;
72
-
73
-
74
-
75
- if(!(fp1 = fopen(dtfile, "r"))){
76
-
77
- printf("ファイルを開くことができません\n");
78
-
79
- exit(1);
80
-
81
- }
82
-
83
- if ((fp2 = fopen(dtfile2, "w")) == NULL) {
84
-
85
- fprintf(stderr, "ファイルのオープンに失敗しました.\n");
86
-
87
- return -1;
88
-
89
- }
90
-
91
-  printf("修正する名前を検索します。修正する名前を入力して下さい。\n");
92
-
93
-
94
-
95
- scanf("%s",buff);
96
-
97
- //printf("buff=%s\n" ,buff );
98
-
99
-
100
-
101
- printf( "削除前のdata_tel3.txt\n");
102
-
103
- //linesから1行ずつ取り出す。
104
-
105
- while(fgets(line, 256, fp1) != NULL){
106
-
107
- printf( "%s" ,line );
108
-
109
-
110
-
111
- ptr=strstr(line,buff);
112
-
113
- if(ptr){
114
-
115
- printf( "%s" ,line );
116
-
117
-
118
-
119
- //氏名を修正する。
120
-
121
- //電話番号を修正する。
122
-
123
-
124
-
125
- //data_tmp.txtに修正したデータを保存する
126
-
127
- fputs(line,fp2);
128
-
129
- }else{
130
-
131
- //data_tmp.txtに修正する前のデータを保存する
132
-
133
- // 書き込み
134
-
135
- fputs(line,fp2);
136
-
137
- count++;
138
-
139
- if ( count < 0 ) {
140
-
141
- count=fprintf(stderr, "ファイルの書込みに失敗しました.\n");
142
-
143
- return -1;
144
-
145
- }
146
-
147
- }
148
-
149
- }
150
-
151
- fclose(fp2);
152
-
153
- fclose(fp1);
154
-
155
-
156
-
157
- printf("\n\n");
158
-
159
- fp2 = fopen(dtfile2, "r");
160
-
161
- fp1 = fopen(dtfile, "w");
162
-
163
-
164
-
165
- printf( "一時ファイルdata_tmp2.txt\n" );
166
-
167
- while(fgets(line2, 256, fp2) != NULL){
168
-
169
- printf( "%s" ,line2 );
170
-
171
-
172
-
173
- // 書き込み
174
-
175
- fputs(line2,fp1);
176
-
177
- count++;
178
-
179
- if ( count < 0 ) {
180
-
181
- count=fprintf(stderr, "ファイルの書込みに失敗しました.\n");
182
-
183
- return -1;
184
-
185
- }
186
-
187
- }
188
-
189
- fclose(fp1);
190
-
191
- printf("\n\n");
192
-
193
- fp1 = fopen(dtfile, "r");
194
-
195
-
196
-
197
- printf( "修正後のdata_tel3.txt\n");
198
-
199
- while(fgets(line, 256, fp1) != NULL){
200
-
201
- printf( "%s" ,line );
202
-
203
- }
204
-
205
-
206
-
207
- // ファイルクローズ
208
-
209
- fclose(fp1);
210
-
211
- fclose(fp2);
212
-
213
-
214
-
215
- }
216
-
217
-
218
-
219
- データはdata_tel3.txtです。1行で1人分を表している
220
-
221
- ままごとみたいなデータです。
222
-
223
- naka 080-1111
224
-
225
- yamada 080-5555
226
-
227
- sachiko 080-6666
228
-
229
- itou 090-7777
230
-
231
- suzuki 080-8888
232
-
233
- nakao 090-5467
234
-
235
- katou 090-3425
236
-
237
- michiko 090-5675
225
+ //事項結果
226
+
227
+ naka@naka ~/kadai/kadai9-8
228
+
229
+ $ gcc -o data_amend6 data_amend6.c -Wall
230
+
231
+
232
+
233
+ naka@naka ~/kadai/kadai9-8
234
+
235
+ $ data_amend6
236
+
237
+ $ data_amend6
238
+
239
+ 修正する名前を検索します。修正する名前を入力して下さい。
240
+
241
+ naka
242
+
243
+ 修正前のdata_tel3.txt
244
+
245
+ sachiko ,090-0809
246
+
247
+ naka ,090-7788
248
+
249
+
250
+
251
+ 修正する名前を入力して下さい。
252
+
253
+ nabe
254
+
255
+ 修正する電話番号を入力して下さい。
256
+
257
+ 090-6677
258
+
259
+ kiyoko ,090-9999
260
+
261
+ satou ,090-3214
262
+
263
+ kinosita ,090-8769
264
+
265
+ yamada ,090-4325
266
+
267
+ itou ,080-6354
268
+
269
+ sudou ,090-3333
270
+
271
+ kitou ,080-1342
272
+
273
+
274
+
275
+ 一時ファイルdata_tmp2.txt
276
+
277
+ sachiko ,090-0809
278
+
279
+ nabe ,090-6677
280
+
281
+ kiyoko ,090-9999
282
+
283
+ satou ,090-3214
284
+
285
+ kinosita ,090-8769
286
+
287
+ yamada ,090-4325
288
+
289
+ itou ,080-6354
290
+
291
+ sudou ,090-3333
292
+
293
+ kitou ,080-1342
294
+
295
+
296
+
297
+ 修正後のdata_tel3.txt
298
+
299
+ sachiko ,090-0809
300
+
301
+ nabe ,090-6677
302
+
303
+ kiyoko ,090-9999
304
+
305
+ satou ,090-3214
306
+
307
+ kinosita ,090-8769
308
+
309
+ yamada ,090-4325
310
+
311
+ itou ,080-6354
312
+
313
+ sudou ,090-3333
314
+
315
+ kitou ,080-1342
316
+
317
+ naka@naka ~/kadai/kadai9-8
318
+
319
+ $
320
+
321
+
322
+
323
+
238
324
 
239
325
 
240
326
 

1

データdata_tel3.txtの追加

2018/01/07 06:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -216,6 +216,26 @@
216
216
 
217
217
 
218
218
 
219
+ データはdata_tel3.txtです。1行で1人分を表している
220
+
221
+ ままごとみたいなデータです。
222
+
223
+ naka 080-1111
224
+
225
+ yamada 080-5555
226
+
227
+ sachiko 080-6666
228
+
229
+ itou 090-7777
230
+
231
+ suzuki 080-8888
232
+
233
+ nakao 090-5467
234
+
235
+ katou 090-3425
236
+
237
+ michiko 090-5675
238
+
219
239
 
220
240
 
221
241