
No.1ベストアンサー
- 回答日時:
「C言語で」ではなくてシステムあるいは出力装置によって違いがあります。
例えば"\f"で示されるForm Feed制御文字はプリンタなどでページ送りの意味に扱われます。(これもプリンタの機種やプリンタに送られる文脈で解釈が変わることがあるので「必ずそうなる」というものでもないです。)
一方で"\v"で示されるVertical Tab制御文字は今でも使われるHorizontal Tab("\t")の垂直方向版であらかじめ規定されたタブ位置まで印字位置を進めます。
ただ、いずれも今の時代では制御文字として本来の意味を発揮する使い方はほとんどないだろうと思います。Linux、というよりはターミナルエミュレータ(xtermとか)の仕様によりますけれど、画面上ではあまり意味がないので同じ桁位置で次行移動くらいの実装になっているのでしょう。記憶に定かでないのですが一世を風靡したターミナルVT100がそんな仕様だったのかも知れません。なお、FF("\f")はページ送りの意味から転じて画面クリアの動きをするターミナルもあるようです。
違いがありますか、ということについては、\vと\fでは出力される文字コードが違うので出力をファイルに書く(リダイレクトなども含む)なら違いがあります。その制御文字コードをあるデバイス(ターミナルとかプリンタとか)に送ったときに違いが出るかというのはデバイスに依存します。質問のケースだとたまたまそのターミナルでは"\v"でも"\f"でも同じ動きをするので違いがない、ということです。別のデバイスに送れば違いが出る可能性はあります。
余談ですが、Linuxで改行として扱われているLine Feed("\n")やMacで改行として扱われるCarridge Return("\r")も似たような状況、つまりシステムや出力装置によって解釈が異なる状況があります。
もともとはCRは「同じ行の先頭に印字位置(Carridge)を戻す(return)」という意味で、LFは「(桁位置に関係なく)次の行(Line)に送る(Feed)」という意味がありました。これを比較的正確に残しているのはMS Windowsの文字コードの扱い方です。といって、テキストデータを扱うにも、そのプログラムを作るにも改行コードがCRとLFの2バイトになるのは面倒なのでUnixのようにLFだけを使う(LFにCRの動きを含む)ようになったりMacのようにCRだけになったりして今に至っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Edge スクレイピング
-
C言語で特定の行を抽出する方法...
-
VBAでタブ区切りテキストの保存...
-
【エクセル】改行無しテキスト...
-
エクセルVBA コードが同じでも...
-
Windowsで複数のファイルを同じ...
-
ReadLineでの読み出し行を指定する
-
ExcelをCSV書き出す場合のシー...
-
パスから最後のディレクトリだ...
-
Perlでログファイルからユーザ...
-
メールアドレスでメンバー認証
-
重複するデータを抽出できる秀...
-
MATLABのm-fileについて
-
batファイルでrenameができませ...
-
window.open でのファイル指定方法
-
VBAでCSVファイルを途中行まで...
-
C言語でのファイルのデータ更...
-
close()で例外が投げられる理由
-
VBでファイル分割の方法
-
vba dir の相対パス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で特定の行を抽出する方法...
-
バッチファイルの作り方(CSV→...
-
【エクセル】改行無しテキスト...
-
Edge スクレイピング
-
CSVファイルのフォーマット
-
タブの色を変更する方法
-
【Access2003】VBAでタブ区切り...
-
空白文字 \\f と\\v の違いに...
-
INPUTデータを分割したい!
-
Arduino Excel
-
VB6でのデータの編集(ファイル...
-
VBAでタブ区切りテキストの保存...
-
AccessからExcelをタブ指定で開...
-
perlによるデータのくっつけ方...
-
C++でファイルから複数行のデー...
-
Javaのコーディングスタイル
-
はじめまして。よろしくお願い...
-
Excelのマクロで改行を含んだテ...
-
タブコントロールに付いて
-
エクセル→XML 要素のコピー
おすすめ情報