c语言,统计句中有几个单词。如图。

c语言,统计该句中有多少单词。如图。答案应该输出len=4,但这里运行却是len=1了。
请问是哪里的问题呢?该如何解决呢?

#include<stdio.h>
int main()
{
    char str1[100] = "I am a boy!";
    int len,i;
    if(str1[0]!=' ')                      
        len = 1;                          
    else 
        len = 0;                            
        for(i = 1;str1[i]!='\0';i++)
        {
            if(str1[1]!=' '&&str1[i-1]==' ')
                len++;
        }
    printf("len = %d\n",len);
    return 0;
}

img


#include<stdio.h>
int main()
{
    char str1[100] = "I am a boy!";
    int len,i;
    if(str1[0]!=' ')                      
        len = 1;                          
    else 
        len = 0;                            
        for(i = 0;str1[i]!='\0';i++)
        {
            if(str1[i]!=' '&&str1[i-1]==' ')
                len++;
        }
    printf("len = %d\n",len);
    return 0;
}

这里的问题是if(str1[1]!=' '&&str1[i-1]==' ')应该改为if(str1[i]!=' '&&str1[i-1]==' ')。