1. 程式人生 > >1219: 統計字符串的單詞個數

1219: 統計字符串的單詞個數

== 一行 pan div std 問題 字符 names 分隔

題目描述

輸入一行字符,統計並輸出其中有多少個單詞,單詞之間用空格分隔。

輸入

只有一行,保證只包含可見字符,且此行的所有字符數不超過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: 統計字符串的單詞個數