- ベストアンサー
is_spaceについて
この関数はC言語における空白相当の文字か否かを判定するものですが、その中に出てくる「水平タブ」'\t'「垂直タブ」'\v'「キャリッジリターン」'\r'「ラインフィード」'\f'はどのようにキーを打ったらいいのですか? 例)改行→Enterキー
- みんなの回答 (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でテキストモードバイナリモードがあるのはこのためです。
お礼
サンプルソースを実行してすっきり理解することができました。ありがとうございます。