アプリ版:「スタンプのみでお礼する」機能のリリースについて

標準入力ストリームでは「改行」は標準ストリームのバッファに入る前
にCRLFから\nへと自動変換されるのでしょうか?
それとも標準ストリームのバッファから実引数へ入れる時にCRLFから\nへ変換されるのでしょ
うか?

(windowsOS、C言語)

A 回答 (3件)

バッファに入る時点で変換されていると思います. 標準入力ストリームはテキストストリームであり, 規格では


Characters may have to be added, altered, or deleted on input and output to conform to differing conventions for representing text in the host environment. Thus, there need not be a one-to-one correspondence between the characters in a stream and those in the external representation.
となっていますから, 「バッファと外部との間でやりとりするときに変換する」という解釈が妥当だと思います.
とはいえ, 事実上「知ってても使えない」知識のような気がしますがどうなんでしょう?
    • good
    • 0
この回答へのお礼

細かいところが気になったのでお聞きしましたw
参考になりました、本当に有難うございます。

お礼日時:2009/08/07 05:02

改行はバッファに入る前に変換されます。



従って、ストリームのバッファ上(ungetchar用の1文字バッファも含む)には\nしか存在しません。
    • good
    • 0
この回答へのお礼

参考になりました、本当に有難うございます。

お礼日時:2009/08/07 05:03

そこら辺りの機能に詳しい者ではないので間違っているかもしれませんが、標準入力に入ってくるCRLFの改行コードは自動的には変換されないと思います。

なので用途に応じて自分で改行コードを調節するのが一番いいと思います。
どのような端末やプログラム言語を使うのかにもよりますが、例えばWindows同士での改行コードの変換は必要ないですし、スクリプトで文字列を処理する場合などは、改行コードを一度削除していろいろと処理をしてから最後に適当な改行コードをつけて出力したりすることと思います。
    • good
    • 0
この回答へのお礼

回答していただき有難うございます。

お礼日時:2009/08/07 04:59

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