- ベストアンサー
ファイル読み書き方法について(r+)
現在ファイルへのc言語でファイル書き換えを行おうとしているのですが その部分だけ表すとこんな感じです。 ※多少省いていますので括弧の数等の間違えがあっても見逃してください。 if((fp = fopen("aaa.txt", "r+")) == NULL) ; else{ while((ch = fgetc(fp)) != EOF){ if(ch == '\n'){ name[i] = '\0' i = 0; continue; } name[i] = ch; i++ if(strcmp(name, name_a){ fprintf(fp, "%s", coment); } } } ファイルを読み込んでいって、ある名称が見つかったらその後ろの コメントを更新するというプログラムなのですが。 fprintfまで着ていることは確認できたのですが、なぜか値が書き換わりません。 c言語ではファイル書き換えはあまり一般的ではないということは聞いていて、 以前はすべて読み込んで、一部分を変えてすべて書き込む方法をとって いましたが、効率が悪い気がしたのでこのやり方を試しています。 1 やり方、関数の使い方が間違っているならば正しい方法を教えてください。 2 そもそも"r+"の使い方がおかしい場合は元のやり方でやります。ただし "r+"の使い方が詳しく乗っているサイトが見つからなかったので、 わかりやすいサイト等ありましたら、教えてください。 3 ファイル読み書きで検索するとf_seekなる言葉をよく見かけるのですが、 あれを使わないとだめなんでしょうか? 1つでもいいので教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8812/19983)
- Tacosan
- ベストアンサー率23% (3656/15482)
お礼
ご回答ありがとうございます。 このままの形ではできませんでしたが、 これを元に調べ、何とか作成できました。 やはりfseek等を使わないと無理みたいですね。