我试图弄清楚如何检查一个字符是否等于C中的空白。我知道制表符是'\t',换行符是'\n',但我希望能够检查if语句中的常规空格(来自空格键)。有谁知道这是什么字吗?
'\t'
'\n'
if
t9eec4r01#
空白没有特定的符号。它实际上是一组几个字符,它们是:
' ' space '\t' horizontal tab '\n' newline '\v' vertical tab '\f' form feed '\r' carriage return
如果您想检查这些空白,请使用ctype.h中的isspace标准库函数。对于一个空格,使用' '。
ctype.h
isspace
' '
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的代码,上面的都是扩展名)的所有字符。在原始代码中,这相当于:
isprint
if (c < ' ' || c >= 0x7f) // Deal with non-printing characters.
pes8fvy93#
Space的ASCII值是32。所以你可以将char与八进制值32进行比较,它是40,或者它的十六进制值20。if(c == '\40') { ... }或if(c == '\x20') { ... }\后面的任何数字都被认为是八进制,如果\后面的字符不是x,则被认为是十六进制。
Space
if(c == '\40') { ... }
if(c == '\x20') { ... }
\
x
mec1mxoz4#
不需要特殊的转义序列:你可以直接输入空格:
if (char_i_want_to_test == ' ') { // Do something because it is space }
在ASCII中,空格是代码32,所以你可以用'\x20'甚至32来指定空格,但你真的不应该这样做。旁白:“空白”这个词是空格、制表符、换行符等所有东西的总称。当你特别提到普通的空格字符时,你不应该使用这个术语。
'\x20'
32
sxpgvts35#
要检查空格符号,可以使用以下方法
if ( c == ' ' ) { /*...*/ }
要检查空格和/或制表符(标准空白字符),可以使用以下方法
#include <ctype.h> //... if ( isblank( ( unsigned char )c ) ) { /*...*/ }
要检查白色,可以使用以下方法
#include <ctype.h> //... if ( isspace( ( unsigned char )c ) ) { /*...*/ }
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
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; } } }
7条答案
按热度按时间t9eec4r01#
空白没有特定的符号。它实际上是一组几个字符,它们是:
如果您想检查这些空白,请使用
ctype.h
中的isspace
标准库函数。对于一个空格,使用
' '
。slmsl1lt2#
空格的字符表示形式是
' '
。但是如果你真的要寻找所有的空白,那么C有一个函数(实际上它通常是一个宏):
您可以阅读有关
isspace
here的内容如果您真的想捕获所有非打印字符,则可以使用同一库中的
isprint
函数。它处理0x20以下(空格的ASCII码)和0x7E以上(0x7f是DEL的代码,上面的都是扩展名)的所有字符。在原始代码中,这相当于:
pes8fvy93#
Space
的ASCII值是32。所以你可以将char与八进制值32进行比较,它是40,或者它的十六进制值20。if(c == '\40') { ... }
或
if(c == '\x20') { ... }
\
后面的任何数字都被认为是八进制,如果\
后面的字符不是x
,则被认为是十六进制。mec1mxoz4#
不需要特殊的转义序列:你可以直接输入空格:
在ASCII中,空格是代码32,所以你可以用
'\x20'
甚至32
来指定空格,但你真的不应该这样做。旁白:“空白”这个词是空格、制表符、换行符等所有东西的总称。当你特别提到普通的空格字符时,你不应该使用这个术语。
sxpgvts35#
要检查空格符号,可以使用以下方法
要检查空格和/或制表符(标准空白字符),可以使用以下方法
要检查白色,可以使用以下方法
4uqofj5v6#
使用isspace函数。
C库函数int isspace(int c)检查传入的字符是否为空白字符。
示例代码:
来源:tutorialpoint
p8h8hvxi7#