C语言关于统计一行字符的单词个数
来源:百度知道 编辑:UC知道 时间:2024/05/11 05:16:37
#include<stdio.h>
void main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c=='')word=0;
else if(word==0)
{
word=1;
num++;
}
printf("There are %d words in the line.\n",num);
getche();
}
为什么这个程序答案都是1啊、、、、、怎么改正呢
请举例说明你想达到的效果,这种表达不是很明确你想要什么.
首先创建这样一个function
int Word_Number(char* str){
char n=0;
char i=0;
while(1){
if(*(str+i)==0){
n++;
break;
}
if(*(str+i)==' ') n++;
i++;
}
return n;
}
然后在main里边直接使用就好,比如:
void main(void){
int x;
x=Word_Number("Hello world!");
printf("%d\n",x);
}
结果就是2
或者 char s[255]="hello world";
x=World_Number(c);
结果也是2.
唉,为了保险起见,提醒一下,别忘了#include <stdio.h>另外,还有Word_Number这个function的prototype,也就是要在上面加上一行:int Word_Number(char*);
还有,这个程序,只能辨别以空格来区分单词,如果有","就不行,其实microWord也是这么check的,所以如果有","的话,请在","后边加上空格,或者你自己把if(*(str+i)==' ') n++; 改成if(*(str+i)==' ') || *(str+i)==',') n++;而且如果有两个空格,他会算两个单词,这就是这个程序的bug,如果想避免这个,可以加一个flag之类的东西,自己研究吧.