C语言关于统计一行字符的单词个数

C语言关于统计一行字符的单词个数,请写得齐全一点哦,不要只写一个主干,我看不懂的哦,谢谢、、、、
#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之类的东西,自己研究吧.

如果还有其他的像句号这样的,自己依照这个规律自己加吧.不能什么都靠别人吧.

你都没告诉我你输入的string是什么......

我帮你test了,没有错,我知道你哪里有问题了.可能是gets()这个function,如果gets()也检测有几个单词的话,加入你输入"a空格b",她可能只检测到a,也就是说不关你输入什么,都是一个单词,因为我没用过gets(),所以不能确定,你可以这样进行debug,你让一个string=gets(),然后printf这个string,就知道结果了.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-06-19
#include "stdio.h"
#include "string.h"

void tongji(char a[])
{
int j,n;
for (n=0,j=0;a[j]!='\0';j++)
{
if(a[j]==' ')
n++;
}

printf("\nTotal: %d words.\n",strlen(a)-n);
}

main()
{
char a[81];

clrscr();

puts("Input a string:");
gets(a);
tongji(a);

}
相似回答