我想弄清楚如何检查一个字符是否等于C中的空格。我知道标签是'\t'
而换行是'\n'
,但我希望能够检查if
语句中的常规正常空间(来自空格键)。
有人知道这个角色是什么吗?
答案 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;
}
}
}