我在C中编写了这个函数,它意味着将字符串迭代到下一个非空白字符:
char * iterate_through_whitespace(unsigned char * i){
while(*i && *(i++) <= 32);
return i-1;
}
Run Code Online (Sandbox Code Playgroud)
它似乎工作得很好,但我想知道是否可以安全地假设*i
在这种情况下将被评估为false *i == '\0'
,并且它不会迭代超出字符串的结尾.它在我的计算机上运行良好,但我想知道在其他机器上编译它是否会表现相同.
cni*_*tar 14
标准说:
所有位都设置为0的字节,称为空字符,应存在于基本执行字符集中; 它用于终止字符串.
Kei*_*son 13
是的 - 但在我看来,更明确的是更好的风格:
while (*i != '\0' && ...
Run Code Online (Sandbox Code Playgroud)
但这种比较32
并不是最好的方法. 32
恰好是空格字符的ASCII/Unicode代码,但C不保证任何特定的字符集 - 并且有很多控制字符的值小于32而不是空格.
使用该isspace()
功能.
(我永远不会指出一个指针i
.)