7-2 统计一行文本的单词个数 (15 分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
输入格式:
输入给出一行字符。
输出格式:
在一行中输出单词个数。
输入样例:
Let’s go to room 209.
输出样例:
5
#include<stdio.h>
#include<string.h>
int wordcount(char* str){
char *p=str;
while(*p==' '){
p++;
}//这是当一开始就有空格的情况,有可能有多个连续的空格,所以要考虑跳过
if(*p=='\0'){
return 0;//如果空格之后就是'\0'那就直接结束没有单词所以直接返回0
}
int count=1;//如果能到这里说明没有'\0'结束,起码有一个单词,所以count的初始值为1
while((p=strchr(p,' '))!=NULL){
//使用查找函数查找p后面的空格,如果找到一个空格就跳过连续的空格
while(*p==' '){//找到一个空格就要把连续的空格跳过,所以当不是空格时就会跳出while循环
p++;
}
//不要着急count++
//不是空格还有两种可能,一种是直接结束为'\0'另一种才是单词
if(*p!='\0') count++;
}
return count;
}
int main(){
char str[1024];//因为题目中没有明确说明字符串的长度所以只能先定大一点
gets(str);
printf("%d",wordcount(str));
return 0;
}