- ベストアンサー
ファイルの入出力について
猫 犬 豚 象 鳥 上記のようなテキストファイルを読み込んで 猫犬豚象鳥 のように1行にしてファイルに書き込むプログラムをつくりたいのですがうまくいきません、、 最初whileとfgetcをつかってEOFまで読み込んでfputcでかきこんだのですが この方法だと改行してしまったので whileのなかにif(c!='\n') をいれて改行コードならかきこまないようにしたのですが 実行してみると 猫■犬■豚■象■鳥 となります 実際にできたファイルの■はこれより小さいもので そのままここに貼り付けると 猫 犬 豚 象 鳥 となります。 改行コードを読み飛ばす方法わかるかたいたら 教えてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
おそらくwindowsで実行されていると推察します。 windowsで使用されている文字コード(sjis)の改行コードは「\r\n」の2バイトになっています。おそらく\nだけでなく\rも検出するようプログラムを書きなおせばよいと思います。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
ファイルを「テキストモード」でオープンすればいいような気がする。
- t4t
- ベストアンサー率55% (47/84)
fgetc、fputcではなく、fgets、fputsをお使いになったらいかがでしょうか。 改行は、OSによっては「LF」1文字ではなく「CR」('\r')「LF」('\n')2文字になったりします。 そのため、改行まで(改行を除いて)読み込むようなライブラリ関数fgetsをお使いになり、それで読み取った文字列をそのままfputsで書き込むほうがいいのではないかと思いますよ。 バッファサイズなどにはご注意ください。
お礼
回答ありがとうございます 最初fgets fputsをつかっていたのですが 改行されてしまい、一行で出力できませんでした そのため一文字ずつ読み出すfputcなどを使いました。 なんとかすればfgetsなどでも同様の動作をするプログラムはつくれそうですね、、、
お礼
回答ありがとうございます if(c!='\r')を追記することでうまくできました ありがとうございました