• ベストアンサー

HTMLで開いたsrcの改行コードを調べる方法を教えてください

cgiでHTMLを作成していますが、cgiを実行した時に HTMLで改行が2個入ってしまいます。 unix上のファイルをfgetsにて1行ずつ読み込んで そのまま出力しています。 改行コードを削除したいのですが、 表示しているHTMLのsrc内にある改行コードに何(どの改行コード)が入っているのか分からず、削除できません。 (fgetsで読み込んだ1行の最後に"\0"が入っていると思って、それを削除してみたのですが、駄目でした。このやりかたは間違えていますか?正しい方法を教えてください。) 宜しくお願いいたします。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

文面からすると、CGIの開発言語はC言語でしょうか? その前提で話をすすめます。 出力はどうやってますか? もしかして、puts を使っていませんか? ・fgets は、改行文字までを1行として、改行文字込みで読み込みます。 ・puts は、引数で指定した文字列を出力したあと、改行文字を出力します。 そのため、fgetsで読んでputsで出力すると改行文字がダブります。 もしそうであれば、puts ではなく fputs でstdoutに出力すればOKです。(fputs は引数文字列のみ出力し、改行文字の追加出力は行いません。) なお、「'\0'を削除」というのは明らかに間違ってます。 (そもそも「削除」というのが具体的にどういう操作をしているのか、かなり意味不明ですが) '\0'は、C言語において「文字列」の終わりを示します。 fgets は、1行読み込んだあと、読み込んだ文字列が全部で何文字あるのかを示すために、最後の文字(普通は改行文字)の次に'\0'を入れます。そして、puts やfputsなど、入力として指定した引数の示すデータのうち、'\0'の前までを「文字列」として認識します。

mamappi82
質問者

お礼

回答ありがとうございました。m(_ _)m 開発言語はc++で、fgetで読んで、coutで出力していました。多分、これで、fgetで読み込んでputsで出力したときと同じように、 改行文字がダブっていたのだと思います。 “od -c ファイル | less” でファイル中の改行コードを見ることが出来ることが分かったのでそれで確認しました。 最初、ダブっている'\n'を削除して実行したところ、上手く動かないと思いこんで、いろいろ悩んだあげく、 '\0'の削除してみるという考えに至ったのですが、おっしゃられているとおり、全く“意味不明”の行為でした・・・。 だいたい、\n(改行)と\0(null)は全く別ものですものねf^_^;  また、実は上手くいかないと思っていたのは間違いで、修正している箇所を単純に間違えていただけでした。 (似たような処理をしている箇所が2カ所あって、結果が表示されるのとは別の方の修正をしていましたf^_^;)  質問を出した数分後、休憩を取っている時にその事に気付き、修正しなおしたら、即効解決でした。 しかし、意味不明な修正をしたということは、やっぱりしっかり理解していなかった証拠・・・。 mtaka2さんの回答、'fgets','fput','\n','\0'の再勉強になりました。ありがとうございました。m(_ _)mm(_ _)m

関連するQ&A