题目描述
输入一行字符, 统计并输出其中有多少个单词, 单词之间用空格分隔.
输入
只有一行, 保证只包含可见字符, 且此行的所有字符数不超过 100.
输出
一个整数, 表示输入的一行字符中共有多少个单词.
请注意行尾输出换行.
样例输入
I am a program.
样例输出
- 4
- #include<iostream>
- #include<cstdio>
- #include<string.h>
- using namespace std;
- int main(){
- char str[110];
- while(NULL!=fgets(str,110,stdin)){
- int len=strlen(str);
- int flag=1,count=0;
- for(int i=0;i<len-1;i++){
- if(str[i]!=' '&&flag==1){
- flag=0;
- count++;
- }
- if(str[i]==' '&&flag==0){
- flag=1;
- }
- }
- printf("%d\n",count);
- }
- return 0;
- }
Mist Note: 代码没事多看看, 觉得写的还是比较简单的, 这里有一个之前没有注意的问题, fgets 函数的用法.
fgets 只能读取 N-1 个字符, 包括最后的'\n', 读完结束后系统将自动在最后加'\0'(gets 读完结束后系统自动会将'\n'置换成'\0').
说到这里就有俩种情况了:
一: 当你从键盘上输入 <=N-1 个字符(包括'\n') 时, 那么字符串 str 会以'\n\0'结尾. 这就造成了 strlen(str)比你想象的大 1 ,
当然你可以通过下面代码将'\n'去掉.
- if(str[strlen(str) - 1] == '\n') { // 去掉换行符
- str[strlen(str) - 1] = '\0';
- }
二: 当你从键盘上输入 > N-1 个字符 (包括'\n') 时, 那么字符串 str 会以'\0'结尾.
来源: http://www.bubuko.com/infodetail-2946473.html