码迷,mamicode.com
首页 > 其他好文 > 详细

1219: 统计字符串的单词个数

时间:2019-02-07 10:57:30      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:count   cst   题目   gets   amp   name   stream   for   简单   

题目描述

输入一行字符,统计并输出其中有多少个单词,单词之间用空格分隔。

输入

只有一行,保证只包含可见字符,且此行的所有字符数不超过100。

输出

一个整数,表示输入的一行字符中共有多少个单词。
请注意行尾输出换行。

样例输入

I am a program.

样例输出

4

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<string.h>
 4 using namespace std;
 5 int main(){
 6     char str[110];
 7     while(NULL!=fgets(str,110,stdin)){
 8         int len=strlen(str);
 9         int flag=1,count=0;
10         for(int i=0;i<len-1;i++){
11             if(str[i]!= &&flag==1){
12                 flag=0;
13                 count++;
14             }
15             if(str[i]== &&flag==0){
16                 flag=1;
17             }
18         }
19         printf("%d\n",count);
20     }
21     return 0;
22 }

Mist Note:代码没事多看看,觉得写的还是比较简单的,这里有一个之前没有注意的问题,fgets函数的用法。

fgets只能读取N-1个字符,包括最后的‘\n‘,读完结束后系统将自动在最后加‘\0‘(gets读完结束后系统自动会将‘\n‘置换成‘\0‘)。

说到这里就有俩种情况了:

一:当你从键盘上输入<=N-1个字符(包括‘\n‘)时,那么字符串str会以‘\n\0’结尾。这就造成了strlen(str)比你想象的大 1 ,
当然你可以通过下面代码将‘\n‘去掉。
1  if(str[strlen(str) - 1] == \n) {      // 去掉换行符
2      str[strlen(str) - 1] = \0;   
3  }

二:当你从键盘上输入>N-1个字符(包括‘\n‘)时,那么字符串str会以‘\0‘结尾。

 

1219: 统计字符串的单词个数

标签:count   cst   题目   gets   amp   name   stream   for   简单   

原文地址:https://www.cnblogs.com/mist2019/p/10354478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!