字符串最后一个单词长度,本地调试和在线调试不一样,想了很久,求解答

自己调试了很多遍,就是不明白哪里不对,本地编译器输出正确,但是牛客网上那个90%正确率,输入XSUWHQ应输出6,但是实际输出16,在自己电脑上DEV C++编译就输出6

#include <stdio.h>  //90%正确率 

int main()
{
    int len, i;  //定义长度和字符串长度i
    char str[5000];//定义一个字符串,长度为5000

    i = 0;

    while ( (str[i] = getchar()) != '\n' )  //输入字符串,回车即表示输入完成
    {
        i ++;
    }
    str[i] = '\0'; 
    for ( i=0; i<5000; i++)   //从第一个元素开始遍历
    {
        if ( str[i] != ' ')// 如果不是空格,开始计数长度
        {
            len = len + 1;
        } else if( str[i] == ' ')    //遇到空格则将长度变为0,重新开始计
        {
            len = 0;
        }
        if ( str[i] == '\0' )   //遍历到最后一个元素时将长度减一,并跳出循环
        {
            len--;
            break;
        }
    }

    printf("%d", len);

    return 0;
}