- ベストアンサー
2バイト読飛ばして、スペースに置き換えたいです
Cで、改行がないテキストファイルを800バイト毎に改行を入れることは無事できたのですが、254バイト目と255バイト目に化けている文字があり、それを半角スペース2つに置換したいのですがどうすればよいでしょうか? #include <stdio.h> int main() { FILE *f1,*f2; int i=0; char c; f1 = fopen("afile.txt", "r"); f2 = fopen("bfile.txt", "w"); if (f1 && f2) { while(!feof(f1)) { fscanf(f1, "%c", &c); fprintf(f2, "%c", c); i ++; if (i == 800){ i=0; fprintf(f2, "\n"); } } fclose(f2); fclose(f1); } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 そこまでできているのなら、 while(!feof(f1)) { fscanf(f1, "%c", &c); if (i >= 800){ /* 万が一の保険 */ i=0; fprintf(f2, "\n"); } else if (i == 254 || i == 255) { fprintf(f2, " "); } else { fprintf(f2, "%c", c); } i ++; } 先に書いてしまうから処理に困るのです。処理してから書き込めばよろしい。こうしておけば後々「xxバイト目はyyにしなきゃ」と言うときでも、else ifを追加すればok。 #が、美しくないなぁ・・・ #ちゃんと検証してね、即興で直しているから
その他の回答 (1)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
800バイトの領域を用意し、一気に読み込んで 適当な処理を施して一気に書き込んだ方が楽じゃないかと。
お礼
具体的な方法書いていただきありがとうございます。 おかげさまでうまくいきました(T_T)