• ベストアンサー

is_spaceについて

この関数はC言語における空白相当の文字か否かを判定するものですが、その中に出てくる「水平タブ」'\t'「垂直タブ」'\v'「キャリッジリターン」'\r'「ラインフィード」'\f'はどのようにキーを打ったらいいのですか? 例)改行→Enterキー

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

/* 簡単なテストをするプログラムを作ってみました。 実行すれば、実感できると思います。 */ #include <stdio.h> #include <conio.h> void main(void){ int c; while('Q'!=(c=getch())){ switch(c){ case '\t': printf("TAB\n"); break; case '\f': printf("FORM FEED\n"); break; case '\v': printf("V TAB\n"); break; case '\r': printf("CR\n"); break; case 0x0A: printf("LINE FEED\n"); break; /* case '\n': printf("LINE FEED\n"); break; */ default: printf("%C\n",c); } } } ENTERは、\rでCR(キャリッジリターン:復改)です。 \nは本来LF(ラインフィード)で改行です。 こういうふうになっているのは、テレタイプが端末として使われていたという経緯があります。 プリンタの制御コードに詳しければ、よくわかると思います。 UNIXでは、改行は、LF(0x0A)ですが、 MS-DOSでは、改行はLF+CRになっています。 なので、ENTERを押すとかして改行を入力したファイルなどを読む場合には、LF+CRをLFに置き換えるということがされています。MS-DOSでテキストモードバイナリモードがあるのはこのためです。

yukikundesuyo
質問者

お礼

サンプルソースを実行してすっきり理解することができました。ありがとうございます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

\fは、ラインフィードじゃなくて、フォームフィードです。(CTRL+L) \n:がラインフィードでCTRL+J

yukikundesuyo
質問者

補足

\nはラインフィード(改行)でEnterキーではないでしょうか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

確か \t:Tabキー,CTRL+I \v:CTRL+K \r:CTRL+M \f:CTRL+J だったと思います。

yukikundesuyo
質問者

補足

CTRL+M以外はまったく反応ありません。

関連するQ&A