
No.5ベストアンサー
- 回答日時:
★『\f』のサンプルを載せます。
サンプル:
#include <stdio.h>
// メイン関数
int main( void )
{
printf( "12345\b\b\b\ba\fb\n" );
return 0;
}
解説:
・上記のサンプルをコンパイルして『command.com』というコマンド・プロンプトで実行します。
ここで注意しておきたいのが『cmd.exe』のコマンド・プロンプトではないことです。
コマンド・プロンプトには2種類あります。普段は『cmd.exe』を利用するのが一般ですが
もう一つ『command.com』というものがあります。こちらです。
・『command.com』のコマンドラインから上記のサンプルを実行します。
すると次のように表示されます。
(1)12345
(2)1a345
(3)1a b5
(1)は最初の『12345』が表示されます。
(2)は『\b』×4個なので左方向に4つカーソル位置が移動します。そして『a』を表示します。
(3)は(2)の位置から『\f』により1つ右方向に移動します。そして『b』を表示します。
・(3)の『\f』は右方向に1つ移動する動作ですが同時に文字が消えてしまうようです。
昔のMS-DOS時代のパソコン環境では『\f』の動作は右方向に1つカーソルが移動するだけです。
文字『3』などは消去されません。ここがちょっと動作が違うようです。
でもこれは今のパソコン環境ではまともの『エスケープシーケンス』が動作しないからです。
まとめ:
・昔を思い出して C 言語のエスケープシーケンスをまとめると下のようになります。
[C言語][名前][CTRL][動作]
『\a』『BEL』『^G』…ビープ音
『\b』『BS』『^H』…左方向へ1桁カーソルを移動
『\f』『FF』『^L』…右方向へ1桁カーソルを移動
『\n』『LF』『^J』…下方向へ1行カーソルを移動
『\r』『CR』『^M』…復帰(同じ行の一番左側に移動)
『\t』『HT』『^I』…タブ移動(8桁文字分)
『\v』『VT』『^K』…上方向へ1行カーソルを移動
・上記の動作は昔の MS-DOS パソコンの時に利用できた『エスケープシーケンス』の動作です。
今の多くのパソコンでは一部の動作が目で見て確認できません。
・以上。
回答ありがとうございますっ!!!
サンプルを載せてくれてありがとうございます!
解説も付いててすごく分かりやすかったです!!
MS-DOS時代と現在の環境では動作が違うんですね!
勉強になりました!
また、私が質問していたら教えてやってください。
回答ありがとうございました!
No.4
- 回答日時:
エスケープシーケンスの標準はVT100ですので、
http://ja.wikipedia.org/wiki/VT100
VT100のエスケープシーケンス。
http://hp.vector.co.jp/authors/VA016670/escape_c …
C言語もVT100端末を操ることが基本機能になっています。
ただし、Windowsのコンソールは、VT100をシミュレーションしていませんので完全な再現性は無いと思います。ようするに、\fや\vはちゃんと動作しません。
回答ありがとうございます!
\f や \v だけがどうしても使用方法がわからなかったので、
zwi さんのような専門家がいると、未熟者の私としては心強いです。
この2つのエスケープ文字については無視して勉強していこうと思います。
回答ありがとうございました!
No.3
- 回答日時:
No.1
- 回答日時:
C言語の規格上の正確な定義は未確認ですが,普通は次の制御文字に対応します.
・\f:FF (Form Feed,改ページ,ASCII では 0x0C)
・\v:VT (Vertical Tab,垂直タブ,ASCII では 0x0B)
これらを出力した場合にどういう動作をするかは出力装置依存です.
昔はプリンタに FF を出力して改ページさせたり,そのためにテキストファイル内の
改ページさせたい位置に FF を埋め込んだりしたこともありましたが,
最近ではプリンタに直接制御文字を出力することは (ドライバ以外では) ありません.
テキスト画面への出力ならば,理論上は画面消去ということになるはずですが,
実際には FF は無視して ANSI エスケープ・シーケンス (ESC '[' '2' 'J') などで
画面消去するというものが圧倒的に多かったです.
VT にいたっては,「垂直方向の特定の位置に移動させる」という程度の意味しか
規定されていないし,実際の使用例もほとんど記憶にありません.
(逆改行や半改行として使ってた例もあったような気がするが….)
そういうわけで,最近では特殊な出力装置を制御する場合以外,\f や \v を
使う機会はほとんどないと思います.
制御文字 (Wikipedia)
http://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1% …
Control character (Wikipedia 英語版)
http://en.wikipedia.org/wiki/Control_character
ASCII (Wikipedia)
http://ja.wikipedia.org/wiki/ASCII
丁寧な回答ありがとうございます!
ほかのエスケープ文字の使い方はわかっていたので、
その2つについて、使い方を知りたかったんですが、
使う機会がほとんど無いなら、あきらめようと思います。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
- C言語・C++・C# 【C言語】全角文字の配列を、全角のまま1文字ずつ出力する方法 4 2023/05/09 15:08
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
TV出力ポートをOFFにすれば良い...
-
C#でアクセス権限の取得方法が...
-
printfとputcharの違いは
-
Windows Formアプリからコンソ...
-
標準出力の上書き
-
VBAのExecメソッドで画面を非表...
-
Accessのテーブルからcsv出力す...
-
cout と cerrの違い
-
【UWSC】WEBページ中の特定文字...
-
coutで出力した文字を消去する...
-
MMDでavi出力が出来ない
-
CRC16計算について
-
VBAで出力したCSVファイルの先...
-
VBA レジストリの値の読み方に...
-
ACCESS フォームで選択したレコ...
-
MAC サウンド 故障
-
コンセントの電力は入力と出力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
MMDでavi出力が出来ない
-
コンセントの電力は入力と出力...
-
Windows Formアプリからコンソ...
-
Accessのテーブルからcsv出力す...
-
プログラムについての質問です...
-
VBAのExecメソッドで画面を非表...
-
cout と cerrの違い
-
アクセスでエクセルに出力する...
-
COBOLのMOVEで桁数が異なる場合
-
C# 標準出力のencodingをutf8に...
-
CRC16計算について
-
4種類(A4縦、A4横、A3縦、A3横)のヘ...
-
TV出力ポートをOFFにすれば良い...
-
C#でアクセス権限の取得方法が...
-
【UWSC】WEBページ中の特定文字...
-
KEYENCEのシーケンスプログラム...
-
【ExcelVBA】最終行の取得で困...
-
ListViewの複数選択について
おすすめ情報