- ベストアンサー
C言語のエスケープ文字についての質問です
エスケープ文字の使い方がわからないので教えてください! \f と \v の使い方がわかりません。 printf()内に記述していろいろ試したのですがわかりません。 \v はprintf内に記述したら、X(バツ)マークが表示されるだけでした。 どなたか教えていただけませんか? できればサンプルを載せてくれればうれしいです。
- みんなの回答 (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 パソコンの時に利用できた『エスケープシーケンス』の動作です。 今の多くのパソコンでは一部の動作が目で見て確認できません。 ・以上。
その他の回答 (4)
- zwi
- ベストアンサー率56% (730/1282)
エスケープシーケンスの標準はVT100ですので、 http://ja.wikipedia.org/wiki/VT100 VT100のエスケープシーケンス。 http://hp.vector.co.jp/authors/VA016670/escape_code.html C言語もVT100端末を操ることが基本機能になっています。 ただし、Windowsのコンソールは、VT100をシミュレーションしていませんので完全な再現性は無いと思います。ようするに、\fや\vはちゃんと動作しません。
お礼
回答ありがとうございます! \f や \v だけがどうしても使用方法がわからなかったので、 zwi さんのような専門家がいると、未熟者の私としては心強いです。 この2つのエスケープ文字については無視して勉強していこうと思います。 回答ありがとうございました!
- master000
- ベストアンサー率33% (16/48)
下のURLはいかがでしょうか。
お礼
回答ありがとうございます!!参考にさせてもらいます。
- master000
- ベストアンサー率33% (16/48)
聞く前にGoogleで検索してみましょう。 「エスケープ文字 C言語」で一番先に出てきますよ。 表題が「基礎的C言語文法のまとめ」のページで見てください。
お礼
回答ありがとうございます! 聞く前にこのサイトを見たんですが、 意味(改行、垂直タブなど)しか載ってなくて、 具体的な使い方というか効果が実感できるようなコードが載ってないので ここに質問したんですけど…
- noocyte
- ベストアンサー率58% (171/291)
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%E6%96%87%E5%AD%97 Control character (Wikipedia 英語版) http://en.wikipedia.org/wiki/Control_character ASCII (Wikipedia) http://ja.wikipedia.org/wiki/ASCII
お礼
丁寧な回答ありがとうございます! ほかのエスケープ文字の使い方はわかっていたので、 その2つについて、使い方を知りたかったんですが、 使う機会がほとんど無いなら、あきらめようと思います。 回答ありがとうございました。
お礼
回答ありがとうございますっ!!! サンプルを載せてくれてありがとうございます! 解説も付いててすごく分かりやすかったです!! MS-DOS時代と現在の環境では動作が違うんですね! 勉強になりました! また、私が質問していたら教えてやってください。 回答ありがとうございました!