检测字符串是否仅由空格组成?

时间:2011-05-10 13:33:52

标签: c string

检查C中的字符串是否仅由空格组成的最有效/最安全的方法是什么?我是否需要自己编写一个函数来检查,或者我可以使用string.h中的一个函数吗?

4 个答案:

答案 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的初始段的长度 完全由...组成 字符不是拒绝。