Ces*_*r A 33 c whitespace space
我试图找出如何检查一个字符是否等于C中的空格.我知道标签是'\t'和换行符'\n',但我希望能够检查一个常规的正常空间(来自空格键)在一份if声明中.
有谁知道这是什么角色?
hac*_*cks 46
空白没有特定的符号.它实际上是一组通常的一些字符:
' ' space
'\t' horizontal tab
'\n' newline
'\v' vertical tab
'\f' feed
'\r' carriage return
Run Code Online (Sandbox Code Playgroud)
如果要检查这些空格中的任何一个,请使用isspace标准库函数ctype.h.
对于一个空间,请使用' '.
空间的字符表示很简单' '.
void foo (const char *s)
{
unsigned char c;
...
if (c == ' ')
...
}
Run Code Online (Sandbox Code Playgroud)
但是如果你真的在寻找所有的空白,那么C有一个函数(实际上它通常是一个宏):
#include <ctype.h>
...
void foo (const char *s)
{
char c;
...
if (isspace(c))
...
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读isspace
如果您确实要捕获所有非打印字符,则要使用的函数isprint来自同一个库.这将处理0x20以下的所有字符(空格的ASCII代码)和0x7E以上的字符(0x7f是DEL的代码,以及上面的所有内容都是扩展名).
在原始代码中,这相当于:
if (c < ' ' || c >= 0x7f)
// Deal with non-printing characters.
Run Code Online (Sandbox Code Playgroud)
小智 5
ASCII值为Space32.因此,您可以将char与八进制值32进行比较,该值为40或其十六进制值为20.
if(c == '\40')
{ ... }
要么
if(c == '\x20')
{ ... }
如果后面的\字符\不是x,则假定为八进制之后的任何数字,在这种情况下,它被认为是十六进制.