
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も見ています
関連するQ&A
- 1 c:\プロジェクト別\c言語\c-master\kadai22\main.c(1) : fatal error C1083: include ファイルを開けませ
- 2 printf("\a");のアラーム音
- 3 c:\Winodows\Sendotoとc:\Windows\デスクトップについて
- 4 printf("文字列\n")が円マークなんです!!斜線がでない!!
- 5 C:\Program Files (x86)\Microsoft Visual Studio\201
- 6 printf()関数の括弧を二重にして、printf((~~~))とし
- 7 構文中の『\n』、『\n\t』について
- 8 ウォッチの値とprintfの値が違う
- 9 printf("%d",func())はなぜ実行できないのか?
- 10 \"%s\"の使いかたについて
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
テキストファイル(tsv)を改行...
-
5
CSVファイルの取り込み
-
6
EXELよりVBAを使ってTXTを書き...
-
7
【エクセル】改行無しテキスト...
-
8
エクセルVBAで素数だけを出力す...
-
9
Firefox で file:// で始まる U...
-
10
配列の中に重複文字列があるか...
-
11
ReadLineでの読み出し行を指定する
-
12
Pythonでテキストを行数指定し...
-
13
batファイルでrenameができませ...
-
14
エクセルVBAでCSVファイ...
-
15
Windowsで複数のファイルを同じ...
-
16
python renameについて
-
17
配列をまるごとフォルダにコピ...
-
18
配列データをファイルに読み込...
-
19
perlで容量の大きいCSVファイル...
-
20
fopenでディレクトリ内の全ファ...
おすすめ情報