检查C中的字符串是否仅由空格组成的最有效/最安全的方法是什么?我是否需要自己编写一个函数来检查,或者我可以使用string.h中的一个函数吗?
答案 0 :(得分:5)
好吧,写你自己很简单:
int IsSpaces( char * s ) {
while ( * s ) {
if ( ! isspace( * s ) ) {
return 0;
}
s++;
}
return 1;
}
您在标准库中使用的任何内容都不太可能效率更高。
答案 1 :(得分:5)
试试这个:
if (!s[strspn(s, " ")]) /* it's all spaces */
如果您还希望在“空格”的定义中包含制表符,换行符等,只需将它们添加到strspn
的第二个参数中。
答案 2 :(得分:1)
当你说空格时,你的意思是还是间距字符?
但是,没有这样的功能,但这有效:
int isonlyspaces(char *str) {
while (*str++ == ' ');
return --str == '\0';
}
如果您的意思是间隔字符而不是文字空格,则此版本是合适的:
int isonlyspaces(char *str) {
while (isspace(*str++));
return --str == '\0';
}
答案 3 :(得分:1)
man string.h
将我带到了以下联机帮助页。
NAME strspn,strcspn - 在字符串中搜索一组字符
概要
#include <string.h>
size_t strspn(const char *s, const char *accept);
size_t strcspn(const char *s, const char *reject);
说明
strspn()函数计算 s的初始段的长度 它完全由字符组成 在接受。
strcspn()函数计算 s的初始段的长度 完全由...组成 字符不是拒绝。