c语言基础填空有趣题! 求解!

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

求最长单词的长度及单词,如果最长的单词有多个,则只需输出第一个即可,请补充代码,使其能实现规定的功能。

#include <stdio.h>

#include <string.h>

int main()

{     char a[10000];

       int i,j,flag,w,p,len,max=0;

       printf("请输入一个字符串\n");

       gets(a);

       flag=0;//0表示单词处于结束状态,1表示单词处于开始态

       for(i=0;   1    ;i++)

       {   w=         2             ;//a[i]是否为字母

              if(            3      )//单词开始

              {  flag=1;  //更改单词状态

                 len=0;   //len表示单词长度

              }

              if(        4      )//单词处于中间状态

                                   ;

              if(        5        )// 单词结束

              {  flag=0; //更改单词状态

                if(max<len) //是否更长?

                     {  max=len;

p=i-len;    

}

              }

       }

       if(max<len)  //处理

         { max=len; p=i-len;}

       printf("最大长度:%d,单词为:",max);

       for(i=0;i<max;i++)

         printf("%c",a[i+p]);

       return 1;

}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

填那5个空得到想要的结果

第6个在哪?
感觉w没啥作用的啊

是填6个空 有一个没标到