C语言求单词的个数

我就想知道我哪里写错了#include<string.h>#include<stdio.h>#defineN80intfun(char*s){inti;intsum=0;... 我就想知道我哪里写错了 #include<string.h> #include<stdio.h> #define N 80 int fun(char *s) { int i; int sum=0; int flag=1; for(i=0;*s!='\0';i++) if(flag=1) if(s[i]!=' ') flag=0; if(s[i]==' ') { flag=1; sum++; } return sum; } void main() { FILE *wf; char line[N]; int num=0; printf("Enter a string:\n "); gets(line); num=fun(line); printf("The number of word is:%d\n\n ",num); /******************************/ wf=fopen("out.dat","w"); fprintf(wf,"%d",fun("a big car")); fclose(wf); /*****************************/ } 展开
 我来答
满旭亓官智敏
2020-06-11 · TA获得超过3692个赞
知道大有可为答主
回答量:3069
采纳率:29%
帮助的人:178万
展开全部
错误比较多,一一罗列一下:
1、判断相等用==,fun函数用if(flag=1)这句就用错了
2、for循环不加括号,值包含了第一个if判断的内容,而第二个if(s[i]=='
')这个就会在循环结束之后判断
3、循环中使用循环条件使用*s!='\0',这个s指针一直指向字符串的首地址,*s一直是首地址的值,所以会使的其变为死循环,修改为s[i]!='\0'
4、判断是否为一个单词不能只用s[i]=='
'来判断,如果两个单词直接有多个空格的话,就会多判断出单词数,所以修改为s[i]=='
'&&flag==0
5、最后一个单词后面没有空格的话,该程序会将最后一个单词漏掉,所以循环结束之后需要再判断flag是否为0,为0则说明有一个单词没有统计上,加上。
6、代码书写规范就不说了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式