改行コード プログラミングにおける改行コード

Weblio 辞書 > 辞書・百科事典 > 百科事典 > 改行コードの解説 > プログラミングにおける改行コード 

改行コード

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/02/05 21:29 UTC 版)

プログラミングにおける改行コード

複数のオペレーティングシステムに対応できるプログラムを記述するために、プログラミング言語は異なる改行コードを扱うためにある程度の抽象性を提供している。

C言語では'\n'(改行)と'\r'(復帰)の2つのエスケープシーケンスを提供している。言語処理系はこれらのエスケープシーケンスをそれぞれ異なった環境依存のchar型に収まる範囲のバイト列に変換する。例えばUNIXやWindows上の一般的な処理系ではそれぞれ、0A(16進)0D(16進)である。

ただし、I/O用のライブラリ中で'\n'に相当する数値(上記の例では0A(16進))が特殊な値として処理されるシステムもある。これらの出力関数ではテキストモードで開かれたファイルにデータを出力する時、'\n'の部分がシステムで使用されている改行コード列に変換された文字列がファイルに出力される。例えば、UNIXでは、改行コード列は「0A(16進)」であり、Windowsでは「0D 0A(16進)」、Macintoshでは「0D(16進)」である。また、入力関数fgetsfreadreadはテキストモードで開かれたファイルからデータを読み込む場合、ファイル中にシステム依存の改行コード列があれば、その部分を'\n'に対応する数値に変換したものを変数に格納する。ファイルがバイナリモードで開かれている場合には、どの入出力関数も数値を変換をせずそのままの値として読み書きする。

これらの関数は、「0D 0A(16進)」の使用を要求する通信プロトコルを使ってテキストをやりとりする場合に問題になる。そのようなストリームに対し、printf関数などを使い'\n'を出力すると、Windowsシステムでは期待通り「0D 0A(16進)」が送信されるが、UNIXでは「0A(16進)」しか送信されないため、問題となる。解決策として、バイナリモードを使って目的の数値(0D(16進) 0A(16進))を直接送るとどのような場合も正しく動作する。

Java言語でも'\n'(改行)、'\r'(復帰)の2つのエスケープシーケンスを提供している。言語処理系はこれらのエスケープシーケンスを、それぞれ、16ビットの数値000A(16進)000D(16進)に変換する。

よく使われるjava.io.PrintStreamクラスのprintメソッドやprintlnメソッド、printfメソッドは、C言語のprintf関数とは異なり、これらの数値を特別扱いせず、環境依存の改行コードに変換しない。ただし、printfメソッドで使われる書式文字列中では「改行」を表現するための特殊な表記として「%n」を使える。printfメソッドはこの部分を実行環境依存の改行コードに置換した文字列を出力する。また、いずれのメソッドでも、出力されるバイト数、バイト順については設定された文字符号化方式に依存する。




「改行コード」の続きの解説一覧



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「改行コード」の関連用語

改行コードのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



改行コードのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの改行コード (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS