• ベストアンサー

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); } }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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。 #が、美しくないなぁ・・・ #ちゃんと検証してね、即興で直しているから

matchori
質問者

お礼

具体的な方法書いていただきありがとうございます。 おかげさまでうまくいきました(T_T)

その他の回答 (1)

回答No.1

800バイトの領域を用意し、一気に読み込んで 適当な処理を施して一気に書き込んだ方が楽じゃないかと。

関連するQ&A

専門家に質問してみよう