c语言,查看有多少单词的程序。。。。

来源:百度知道 编辑:UC知道 时间:2024/06/28 17:15:05
我编了一个查看一个字符串有多少单词的程序,单词与单词之间用一个或多个空格分开,开头可以有一个或多个空格,程序运行后,不知道为什么永远都是得0个单词,后来不用指针了还是不行,请大家帮帮忙。。。
程序如下:
#include <stdio.h>
#include <string.h>
void main()
{
char a[100],*p;
int k=0;
gets(a);
for(p=a;*p==' ';p++)
if(*p!='\0')
{
{
if((*(p-1)!=' ')&&(*(p-1)!='\0')&&(*p==' '))
k++;
}
p++;
}
printf("there are %d words\n",k);
}

//Robin评语:原来的程序很多地方有小问题,我改了一下,如果你有什么不懂,可以baiduHI我,我现在有空
#include <stdio.h>
#include <string.h>
void main()
{
char a[100],*p;
int k=0;
gets(a);
if(a[0]!='\0')
k++;//判断第一个单词
for(p=a;*p!='\0';p++)//条件是不结束!!!
{

if((*(p-1)!=' ')&&(*(p-1)!='\0')&&(*p==' '))
k++;//如果没空格就++

}
printf("there are %d words\n",k);
}

没有具体看你的程序,但是你的for语句的结束条件是*p==' ',
而K++的前提是
if((*(p-1)!=' ')&&(*(p-1)!='\0')&&(*p==' '))//这里面要求*p==' '
因此无论*p的结果怎样,K++都是得不到执行的。

你写的大体上已经出来了,只不过应该把你的循环嵌套一下就对了。