C语言中空格的符号是什么?

pu82cl6c  于 2023-05-06  发布在  其他
关注(0)|答案(7)|浏览(441)

我试图弄清楚如何检查一个字符是否等于C中的空白。我知道制表符是'\t',换行符是'\n',但我希望能够检查if语句中的常规空格(来自空格键)。
有谁知道这是什么字吗?

t9eec4r0

t9eec4r01#

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

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

如果您想检查这些空白,请使用ctype.h中的isspace标准库函数。
对于一个空格,使用' '

slmsl1lt

slmsl1lt2#

空格的字符表示形式是' '

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

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

#include <ctype.h>
...

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

您可以阅读有关isspacehere的内容
如果您真的想捕获所有非打印字符,则可以使用同一库中的isprint函数。它处理0x20以下(空格的ASCII码)和0x7E以上(0x7f是DEL的代码,上面的都是扩展名)的所有字符。
在原始代码中,这相当于:

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

pes8fvy93#

Space的ASCII值是32。所以你可以将char与八进制值32进行比较,它是40,或者它的十六进制值20。
if(c == '\40') { ... }

if(c == '\x20') { ... }
\后面的任何数字都被认为是八进制,如果\后面的字符不是x,则被认为是十六进制。

mec1mxoz

mec1mxoz4#

不需要特殊的转义序列:你可以直接输入空格:

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

在ASCII中,空格是代码32,所以你可以用'\x20'甚至32来指定空格,但你真的不应该这样做。
旁白:“空白”这个词是空格、制表符、换行符等所有东西的总称。当你特别提到普通的空格字符时,你不应该使用这个术语。

sxpgvts3

sxpgvts35#

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

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

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

#include <ctype.h>

//...

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

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

#include <ctype.h>

//...

if ( isspace( ( unsigned char )c ) ) { /*...*/ }
4uqofj5v

4uqofj5v6#

使用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 ' '  
  */     
    }
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

p8h8hvxi

p8h8hvxi7#

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

相关问题