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); /*****************************/ }
展开
1个回答
展开全部
错误比较多,一一罗列一下:
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、代码书写规范就不说了。
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、代码书写规范就不说了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询