作业帮 > 综合 > 作业

有个函数里的语句看不懂求大神分析

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 06:17:19
有个函数里的语句看不懂求大神分析
int fun(char *s)
{ int n=0,flag=0;
while(*s!='\0')
{if(*s!=' '&&flag==0)
{n++;flag=1;}
if(*s==' ') flag=0;
s++;}
return n;
}
这个函数的功能是计算形参s所指的字符串中包含单词的个数,单词是用空格分开的,个数作为函数返回值,可是我看不懂这个函数是怎么实现这个功能的,flag是干嘛的?还有嵌套在if语句里的if语句到底是什么意思,不知道这个函数怎么执行,
flag可以理解为 是用来标记是不是一个单词的开始,初始化为0,表示是单词的开头.
if(*s!=' '&&flag==0) //如果当前字符不是空格,并且是单词头
{n++;flag=1;} //单词个数自增1,flag标记为1,表示往后就不是单词开头了
if(*s==' ') flag=0; //遇到一个空格,flag标记为0,后面会开始一个单词了
s++; //指针向后移一位,指向下一个字符