我制作了这个简单的程序
#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;
}
这个程序帐户所有的四个字母的单词,问题在于没有帐号字符串的第一个单词有四个字母,我不知道我怎么能让它工作。
有人能帮助我吗?
答案 0 :(得分:2)
您的程序不计算第一个单词,因为它要求单词之前的字符是空格:
s1[i - 1] == ' '
i
为零时,这是不正确的(并且它也是未定义的行为)。请注意,此条件可以完全删除,因为从pos
返回的位置strcspn
始终存在空格,并且您始终位于pos+1
位置。