とっておきの手土産を教えて

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

A 回答 (5件)

★アドバイス


・普通に『\n』を検索して『\0』に書き換えれば改行消去できます。

サンプル:
char buff[ 256 ];
char *find;
FILE *fp;

ファイルのオープン
 :
while ( fgets(buff,sizeof(buff),fp) != NULL ){
 if ( (find = strchr(buff,'\n')) != NULL ){
  *find = '\0';
 }
 :
 処理
 :
}
 :
ファイルのクローズ
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/05/10 20:51

テキストファイルの1行が


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

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

お礼日時:2008/05/12 07:33

一番良いのはユニコードで読み込ませる方法ですが、それはちょっと難しいと思うので簡単に解決法を・・


例えばファイルの内容が

あいうえお

だったとして

char Str[ 1080 ];

という変数にファイル入力関数を使って保存したと仮定すると
あいうえお、つまり5文字ですが、日本語は2バイトなので配列では10の領域を使います。
したがって改行文字はこの10番目の要素の近辺に潜んでいることになります。

そういう場合は
Str[ 10 ] = '\0';
などとすれば良いでしょう。
Str[ 10 ] は10じゃなくて9とか8かもしれないのでそこは試してみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/10 20:56

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/10 20:53

ご質問の趣旨が今ひとつ理解できません。



汚いとは何をした時の話でしょうか。

また、改行文字を消すも何も、御自分の
プログラムなら行を読込んだで、書込み
や何かをする時に、改行文字を送らない
だけの話ですが。方法を知りたいとは?
もしかして、御自分のプログラムでは無い
のでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/10 20:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A