给出一段没有标点的文章,找出第n个单词的长度c语言问题,代码哪里错了?困扰半天了求大佬解答

  •     题目描述
    

    给出一段没有标点的文章,找出第n个单词的长度

  • 输入
    第一行一个数字,表示第n个单词( 0 < n < 104)
    第二行输入一段文章以回车结束(至少一个字符,每个单词长度 小于 104)

  • 输出
    输出一个数字

#include<stdio.h>
#include"string.h"
int main(void)
{
    char str[1000];
    int i,j,count,n,result=0,len;
    scanf("%d",&n);
    getchar();
    gets(str);
    count=1;
    len=strlen(str);

    for(i=0;i<len;i++)
    {
        if(str[i]==' '&&str[i+1]!=' ')
           {
            count++;
           }
        if(count==n)
        {
            for(j=i;str[j]!=' ';j++)
             {
                 if(str[j]!=' ')
                   {
                       result++;
                   }
             }

        }
    }
    printf("%d\n",result);

    return 0;
}

// 仅供参考

#include<stdio.h>
#include"string.h"
int main(void)
{
    char str[1000];
    int i,j,count,n,result=0,len;
    scanf("%d",&n);
    getchar();
    gets(str);
    count=1;
    len=strlen(str);

    for(i=0;i<len;i++)
    {
        if(str[i]==' ' && str[i+1]!=' ')
       {
            count++;
       }
        if(count==n)
        {
            for(j= (i==0?i:i+1);str[j]!=' ' && j < len;j++) //如果不是第一个单词从空格后(i+1)开始取值 
            {
                // printf("%c", str[j]);
                result++;
            }
            break; // 满足条件跳出 
        }
    }
    printf("%d\n",result);

    return 0;
}



// 原代码,主要是要自己跟着程序走一遍才会知道问题所在,最好调试着看
// 主要问题是 什么时候进入内层个循环,统计完单词后要跳出外层循环
#include<stdio.h>
#include"string.h"
int main(void)
{
    char str[1000];
    int i,j,count,n,result=0,len;
    scanf("%d",&n);
    getchar();
    gets(str);
    count=1;
    len=strlen(str);

    for(i=0;i<len;i++)  // 举例输入的是:str="aa bb cc dd" n=2
    {
        if(str[i]==' '&&str[i+1]!=' ') // 当i=2时 str[2]==空格,下面count++ count=2    当i=3时,str[3]='b'不满足条件,count=2不变    str[4]='b'不满足条件,count=2不变
           {
            count++;
           }
        if(count==n) //i=2时 count=2进入     i=3时count=2    i=4时count=2 
        {
            for(j=i;str[j]!=' ';j++) // i=2 str[2]=空格,条件不符合跳出循环    i=3时进入循环最终循环统计结果result=2(bb)此处统计应该跳出外层循环  而i=4时进入循环最终循环统计结果result=3(b)多余统计 
             {
                 if(str[j]!=' ') // i=3 --> 会计数2个b result=2     i=4时会计数一个b result=3 
                   {
                       result++;
                   }
             }

        }
    }
    printf("%d\n",result);

    return 0;
}