C中的空格符号是什么?

时间:2015-05-04 15:10:39

标签: c whitespace space

我想弄清楚如何检查一个字符是否等于C中的空格。我知道标签是'\t'而换行是'\n',但我希望能够检查if语句中的常规正常空间(来自空格键)。

有人知道这个角色是什么吗?

5 个答案:

答案 0 :(得分:41)

空白没有特定的符号。它实际上是一组通常的一些字符:

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

如果要检查这些空格中的任何一个,请使用isspace中的ctype.h标准库函数。

仅限空格,请使用' '

答案 1 :(得分:8)

Space的字符表示只是' '

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 here

如果您确实要捕获所有非打印字符,则要使用的函数来自同一个库中的isprint。这涉及0x20以下的所有字符(空格的ASCII代码)和0x7E以上(0x7f是DEL的代码,以及上面的所有内容都是扩展名)。

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

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

答案 2 :(得分:5)

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

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

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

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

答案 3 :(得分:1)

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

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

要检查空格和/或制表符号(标准空白字符),您可以使用以下方法

#include <ctype.h>

//...

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

要检查空白区域,您可以使用以下方法

#include <ctype.h>

//...

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

答案 4 :(得分:0)

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