统计所有四个字母的单词

时间:2015-08-23 23:24:32

标签: c

我制作了这个简单的程序

#include <string.h>
#include <stdio.h>

int main(void)
{
    char s1[] = "aaaa bbb cccc";
    int pos = 0, i, cont = 0;

    for (i = 0; s1[i] != '\0'; i += pos + 1)
        if (((pos = strcspn( s1 + i, " " )) == 4 && s1[i - 1] == ' '))
            cont++;

    printf("Quantity: %d\n", cont);

    return 0;
}

这个程序帐户所有的四个字母的单词,问题在于没有帐号字符串的第一个单词有四个字母,我不知道我怎么能让它工作。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

您的程序不计算第一个单词,因为它要求单词之前的字符是空格:

s1[i - 1] == ' '

i为零时,这是不正确的(并且它也是未定义的行为)。请注意,此条件可以完全删除,因为从pos返回的位置strcspn始终存在空格,并且您始终位于pos+1位置。