• ベストアンサー

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

  • キャリッジリターンとラインフィードの違い

    キャリッジリターン(CR+LF)とラインフィード(LF)の違いについて良く分かりません。 Windowsの場合、改行(Enter)はキャリッジリターン(CR+LF)となるとのことですが、キャリッジリターン(CR+LF)の使用されたコードをUnix系サーバ(改行がLF)へ転送するとちゃんと動かないと聞きます。 質問1: そこで、分からないのがWindowsXPにインストールされたテキストエディタ(TeraPad)やDreamweaver(MX2004)で作成したPHPコードの中の改行は、やはりラインフィード(LF)ではなく、キャリッジリターン(CR+LF)となってしまっているのでしょうか? 質問2: 実際にPHPコードの中の改行がラインフィード(LF)になっているか又はキャリッジリターン(CR+LF)になっているかは、どのように見分けるのでしょうか? 質問3: PHPコードの中の改行がキャリッジリターン(CR+LF)になっている場合、それをそのままLinux系のサーバ(FreeBSD)にアップロード(つまり、バイナリモードでアップロード)すると、やはりそのプログラムはちゃんと動かないのでしょうか? 質問4: PHPコードの中のキャリッジリターン(CR+LF)を、コードを崩さずに、一気にラインフィード(LF)に返還する方法は、ありますか? 注意: このスレッドでは、ラインフィード(LF)やキャリッジリターン(CR+LF)など、異なる改行コードが異なるOSで使われ初めた理由や経緯をお聞きしているのではありません。プリンター関連の質問では、ないと言うことです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • キャリッジリターンとラインフィードの違いは?

    キャリッジリターンとラインフィードは似ていますが、どこが違うところはありますでしょうか。また、その特徴的など教えていただけると幸いです。 私の解釈としては「キャリッジリターンとラインフィードとも同じだが、OSによって異なっているため、キャリッジリターン(CR)とラインフィード(LF)を合わせて使うことを推奨する。WindowsはCR+LFで改行できるが、MacはCR、UnixはLFでないと改行されない」ということですが、皆様はどう思いますでしょうか。

    • ベストアンサー
    • PHP
  • 改行コードについて教えてください

    EXCEL VBAでの改行コードが分からないので教えてください。 Chr(13)キャリッジリターンとChr(10)ラインフィードはどう違うんでしょうか? 宜しくお願い致します。

  • エクセル(VBA)でファイル出力時

    エクセル(VBA)でテキストファイル出力時 リターンコードはどうやって記述するのでしょうか? chr(9)はタブ chr(10)はラインフィード chr(13)はキャリッジリターン らしいんですがリターンコードはなんでしょうか? 宜しくお願いします

  • iモード対応HTMLの改行コードについて

    ドコモのサイトで、改行コードについて、 「リテラルテキスト(例:PREタグ要素内)以外では、改行(Line Feeds)を無視し、 キャリッジ・リターンやタブは半角スペース一つと解釈します。」 という概要が載っていました。 iモードHTMLシミュレータIIを使用しながら作成していますが、 キャリッジ・リターンは半角スペース一つに置き換えられるのに対し、 タブは解釈していないようです。 情報提供よろしくお願い致します。

    • ベストアンサー
    • HTML
  • Dream Weaverの改行時にTabキーでスペースが入らないようにしたい

    Dream Weaverの標準かどうか、わかりませんが、 Enterキーで改行時に、自然に、Tabキーでスペースがとられています。 Tabキーでスペースがとられていると、ブラウザによって、 ソースが崩れるので(Tabを4スペースや、8スペースとして扱ったりする) 改行時に、自然とTabではないスペースが入るように設定したいのですが 「編集」→「環境設定」を見ても、それらしきものがなかったので、 困っています。 設定方法があるのであれば、教えてください。 よろしくお願いいたします。

  • テキストファイルの改行について

    よろしくお願いします。 改行コードには、 ・LF(ラインフィード、0A、\n) ・CR(キャリッジリターン、0D、\r) かあるようですが、 通常、エディタで改行した場合、 CR+LFで設定されていると思います。 改行コードが混在しているファイルがあり、 LFのみの場合はLF(改行)を削除したいのですが、 私が使っているエディタ「TeraPad」では、この違いを認識しないようです。 (改行マークが同じだった) 改行コードの違いを認識でき、かつLFのみの場合は削除できるようなエディタ、 またはその方法はないでしょうか? ※EmEditorとVxEditorも試しましたが、どちらも違いを認識できませんでした。

  • テキストデータについて

    テキストデータについての質問です。 タブとかリターンはわかるのですが、リターン⏎ではなく下矢印「↓」このキーで改行をしているデータを見ることがあります。これは何?リターンとどのような違いがあるのでしょうか。

  • テキストボックスで改行するたびにエキストラの行間ができてしまいます。

    テキストボックスで改行するたびにエキストラの行間ができてしまいます。 いつもお世話になっています。 テキストボックスの中でふつうに文を書き、改行(ENTERキーを押す)すると何故か知りませんが余分な一行ぐらいの空白ができるのです。改行せずに書き続けると空白は全然できないのですが改行すると余分な空白が…(行間というのでしょうか?) いろいろいじってみても解決が見つからずぜひその空白行間を消す方法を誰か教えてくれたら・・と思っています。 よろしくお願いします。

  • Microsoft Exelで、長文入力

    Microsoft Exelで、結合してつくったりした大きなセルに長文を入力するときに改行しようとしてEnterを押すと下のセルに太枠が行ってしまいますが、セルの中で改行するときはスペースキーで空白を作って改行するしかないのでしょうか。