回答編集履歴
4
訂正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
追記
|
9
|
+
追記3
|
10
10
|
|
11
11
|
以下の行をループの外に出して下さい。クローズするのは書き込みが全部終わった後です。
|
12
12
|
|
@@ -14,20 +14,20 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
+
以下の部分ですが、先にi++してしまうと、line[i]には値が入っていません。
|
18
|
+
|
19
|
+
そもそも、マッチする値が見つかった場合は、fp2に出力する必要はありません。
|
20
|
+
|
21
|
+
> i++;
|
22
|
+
|
23
|
+
> fputs(line[i],fp2);
|
24
|
+
|
25
|
+
|
26
|
+
|
17
27
|
また、1行ずつ読み込んで処理しているので、line[i],line2[i]は毎回使い捨てになります。
|
18
28
|
|
19
|
-
Max個用意する必要はありません。
|
29
|
+
Max個用意する必要はありません。ここを整理すると変数iも必要なくなるのでソースがかなりスッキリします。
|
20
30
|
|
21
31
|
> char line[Max][40]={0};
|
22
32
|
|
23
33
|
> char line2[Max][40]={0};
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
追記2
|
28
|
-
|
29
|
-
以下の部分ですが、先にi++してしまうと、line[i]には値が入っていません。
|
30
|
-
|
31
|
-
> i++;
|
32
|
-
|
33
|
-
> fputs(line[i],fp2);
|
3
追記
test
CHANGED
@@ -21,3 +21,13 @@
|
|
21
21
|
> char line[Max][40]={0};
|
22
22
|
|
23
23
|
> char line2[Max][40]={0};
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
追記2
|
28
|
+
|
29
|
+
以下の部分ですが、先にi++してしまうと、line[i]には値が入っていません。
|
30
|
+
|
31
|
+
> i++;
|
32
|
+
|
33
|
+
> fputs(line[i],fp2);
|
2
追記
test
CHANGED
@@ -3,3 +3,21 @@
|
|
3
3
|
これを元ファイルから読み込めなくなるまで回せばファイルのコピーができますね。
|
4
4
|
|
5
5
|
あとは1行書き出す直前に行に削除する名前が含まれているかチェックする処理を挟むだけです。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
追記
|
10
|
+
|
11
|
+
以下の行をループの外に出して下さい。クローズするのは書き込みが全部終わった後です。
|
12
|
+
|
13
|
+
> fclose(fp2);
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
また、1行ずつ読み込んで処理しているので、line[i],line2[i]は毎回使い捨てになります。
|
18
|
+
|
19
|
+
Max個用意する必要はありません。(ただし、プログラムの動作に支障はないので後で見直して下さい)
|
20
|
+
|
21
|
+
> char line[Max][40]={0};
|
22
|
+
|
23
|
+
> char line2[Max][40]={0};
|
1
追記
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
1
|
まず、元ファイルから1行読み込んで、別ファイルに1行書き出す処理を考えましょう。
|
2
2
|
|
3
|
+
これを元ファイルから読み込めなくなるまで回せばファイルのコピーができますね。
|
4
|
+
|
3
|
-
あとは1行書き出す直前に削除する名前が含まれているかチェックする処理を挟むだけです。
|
5
|
+
あとは1行書き出す直前に行に削除する名前が含まれているかチェックする処理を挟むだけです。
|