C中空格的符号是什么?

What is the symbol for whitespace in C?

我想知道如何在 C 语言中检查一个字符是否等于 white-space。我知道制表符是 '\t',换行符是 '\n',但是我希望能够检查 if 语句中的常规 space(来自 space-bar)。

有人知道这是什么字吗?

白色没有特定符号space。它实际上是一组几个字符,它们是:

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

如果您想检查其中任何一个白色-space,请使用isspace standard library function from ctype.h

对于 space,使用 ' '

Space 的字符表示就是 ' '

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

但如果你真的要全白space,那么 C 有一个函数(实际上它通常是一个宏):

#include <ctype.h>
...

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

您可以阅读有关 isspace here

如果你真的想捕获所有非打印字符,要使用的函数是来自同一个库的isprint。这处理所有低于 0x20(space 的 ASCII 代码)和高于 0x7E(0x7f 是 DEL 的代码,高于它的是扩展名)的所有字符。

在原始代码中,这相当于:

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

不需要特殊的转义序列:您可以直接输入 space:

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

在 ASCII 中,space 是代码 32,因此您 可以 通过 '\x20' 甚至 32 指定 space,但你真的不应该那样做。

旁白:"whitespace" 一词是 space、制表符、换行符等所有内容的统称。当您特指普通 space 字符时,不应使用该术语。

利用 isspace 函数。

The C library function int isspace(int c) checks whether the passed character is white-space.

示例代码:

    int main()
    {

       char var= ' ';

       if( isspace(var) )
       {
          printf("var1 = |%c| is a white-space character\n", var );
       }
/*instead you can easily compare character with ' '  
  */     
    }
Standard white-space characters are −

' '   (0x20)    space (SPC)
'\t'    (0x09)  horizontal tab (TAB)
'\n'    (0x0a)  newline (LF)
'\v'    (0x0b)  vertical tab (VT)
'\f'    (0x0c)  feed (FF)
'\r'    (0x0d)  carriage return (CR)

来源:tutorialpoint

要检查 space 符号,您可以使用以下方法

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

要检查 space and/or 制表符(标准空白字符),您可以使用以下方法

#include <ctype.h>

//...

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

要检查白色 space 您可以使用以下方法

#include <ctype.h>

//...

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

Space 的 ASCII 值是 32。因此您可以将 char 与 32 的八进制值即 40 或其十六进制值即 20 进行比较。

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

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

\ 之后的任何数字都被假定为八进制,如果 \ 之后的字符不是 x,在这种情况下,它被认为是十六进制。

#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;
  }
 }
}