web-dev-qa-db-ja.com

Cの空白の記号は何ですか?

私は文字がCの空白に等しいかどうかを確認しようとしています。タブは'\t'であり、改行は'\n'であることを知っていますが、 ifステートメント内の通常の通常スペース(スペースバーから)。

誰がこれのキャラクターを知っていますか?

30
Cesar A

空白には特別な記号はありません。それは実際には慣習的ないくつかの文字のセットです:

' '      space 
'\t'     horizontal tab 
'\n'     newline
'\v'     vertical tab 
'\f'     feed 
'\r'     carriage return    

これらの空白のいずれかを確認する場合は、 ctype.h の標準ライブラリ関数 isspace を使用します。

スペースだけの場合は、' 'を使用します。

43
haccks

スペースの文字表現は、単に' 'です。

void foo (const char *s)
{
    unsigned char c;
    ...
    if (c == ' ')
        ...
}

しかし、本当にすべての空白を探しているのであれば、Cにはそのための関数(実際はしばしばマクロです)があります:

#include <ctype.h>
...

void foo (const char *s)
{
    char c;
    ...
    if (isspace(c))
        ...
}

isspaceについて読むことができます ここ

すべての非印刷文字を本当にキャッチしたい場合、使用する関数は同じライブラリのisprintです。これは、0x20未満(スペースのASCIIコード)および0x7Eを超えるすべての文字(0x7fはDELのコードであり、その上のすべては拡張機能です)を扱います。

生コードでは、これは次と同等です:

if (c < ' ' || c >= 0x7f)
    // Deal with non-printing characters.
8
kdopen

SpaceのASCII値は32です。したがって、charを32の8進数の値である40または20の16進数の値と比較できます。

if(c == '\40') { ... }

または

if(c == '\x20') { ... }

\の直後の文字がxでない場合、\の後の数字は8進数と見なされます。この場合、16進数と見なされます。

5
Sujit Menon

特別なエスケープシーケンスは不要です。スペースを直接入力するだけです。

if (char_i_want_to_test == ' ') { 
    // Do something because it is space
}

ASCIIでは、スペースはコード32であるため、could'\x20'または32でスペースを指定しますが、実際にはそうすべきではありません。

余談:「ホワイトスペース」という単語は、スペース、タブ、改行などのすべての意味です。特に通常のスペース文字を参照するときは、この用語を使用しないでください。

3
Hurkyl

isspace関数を使用します。

Cライブラリ関数int isspace(int c)は、渡された文字が空白かどうかをチェックします。

サンプルコード:

    int main()
    {

       char var= ' ';

       if( isspace(var) )
       {
          printf("var1 = |%c| is a white-space character\n", var );
       }
/*instead you can easily compare character with ' '  
  */     
    }
標準の空白文字は、-
 
 ''(0x20)スペース(SPC)
 '\ t'(0x09)水平タブ(TAB)
 '\ n'(0x0a)改行(LF)
 '\ v'(0x0b)垂直タブ(VT)
 '\ f'(0x0c)フィード(FF)
 '\ r'(0x0d)キャリッジリターン(CR)
 

ソース: tutorialpoint

1
Tirupati Rao

スペース記号を確認するには、次のアプローチを使用できます

if ( c == ' ' ) { /*...*/ }

スペースやタブ記号(標準の空白文字)を確認するには、次の方法を使用できます

#include <ctype.h>

//...

if ( isblank( c ) ) { /*...*/ }

空白を確認するには、次のアプローチを使用できます

#include <ctype.h>

//...

if ( isspace( c ) ) { /*...*/ }
1
#include <stdio.h>
main()
{
int c,sp,tb,nl;
sp = 0;
tb = 0;
nl = 0;
while((c = getchar()) != EOF)
{
   switch( c )
{
   case ' ':
        ++sp;
     printf("space:%d\n", sp);
     break;
   case  '\t':
        ++tb;
     printf("tab:%d\n", tb);
     break;
   case '\n':
        ++nl;
     printf("new line:%d\n", nl);
     break;
  }
 }
}
0
stpd_rssn