• ベストアンサー

ファイルから読み取った改行文字を消す方法

C言語のプログラムから、テキストファイルを読み込むと、改行文字が・になってしまい、なんだか汚くみえてしまいます。 なので、ファイルから読み取った改行文字を消す方法が知りたいです。教えて下さい。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★アドバイス ・普通に『\n』を検索して『\0』に書き換えれば改行消去できます。 サンプル: char buff[ 256 ]; char *find; FILE *fp; ファイルのオープン  : while ( fgets(buff,sizeof(buff),fp) != NULL ){  if ( (find = strchr(buff,'\n')) != NULL ){   *find = '\0';  }  :  処理  : }  : ファイルのクローズ

mantis777
質問者

お礼

回答ありがとうございます。 \nを検索し、それを\0に置き換えればいいのですか。 なんとなくイメージがつかめたような気がします。 頑張ります!

その他の回答 (4)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.5

テキストファイルの1行が abc だとすると、fgets関数で読み取った内容は 'a', 'b', 'c', '\n', '\0' です。 この中の'\n'を'\0'に変えれば、改行文字を除去できますね。 読み取った当該内容の長さ(strlen関数で求めます)は、'\n'までの4です。 '\n'の位置は、ゼロ始まりで3です。 そうすると、読み取った内容を格納している配列のどこを'\0'にすればよいでしょうか。

mantis777
質問者

お礼

回答ありがとうございます。 文字列の長さを求めて後ろから2番目を置き換える方法もあるんですか。よく分かりました。 ちなみに僕は検索して置き換える方法を使いました。 http://park.geocities.jp/mantiskogane77/dxpage5.html

noname#88356
noname#88356
回答No.3

一番良いのはユニコードで読み込ませる方法ですが、それはちょっと難しいと思うので簡単に解決法を・・ 例えばファイルの内容が あいうえお だったとして char Str[ 1080 ]; という変数にファイル入力関数を使って保存したと仮定すると あいうえお、つまり5文字ですが、日本語は2バイトなので配列では10の領域を使います。 したがって改行文字はこの10番目の要素の近辺に潜んでいることになります。 そういう場合は Str[ 10 ] = '\0'; などとすれば良いでしょう。 Str[ 10 ] は10じゃなくて9とか8かもしれないのでそこは試してみてください。

mantis777
質問者

お礼

回答ありがとうございます。 でも、1バイトの半角英数や2バイトのひらがななどが混じっているのでなかなか全体のサイズが分からないです・・・。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

どんなソースコードを書いて、テキストファイルを読んでいますか?

mantis777
質問者

お礼

回答ありがとうございます。 fgetsで1行づつ読み込んでいます。

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

ご質問の趣旨が今ひとつ理解できません。 汚いとは何をした時の話でしょうか。 また、改行文字を消すも何も、御自分の プログラムなら行を読込んだで、書込み や何かをする時に、改行文字を送らない だけの話ですが。方法を知りたいとは? もしかして、御自分のプログラムでは無い のでしょうか?

mantis777
質問者

お礼

回答ありがとうございます。 その読み込んだ文字たちを縦にずらっと並べたとき、改行文字が・として表示され、てんてんだらけになってしまいます。それが汚く見えてしまいます。今まであまりファイル関係をプログラムしたことがないのでそれを直す方法を詳しく教えて欲しいです。お願いします。

関連するQ&A

専門家に質問してみよう