通過狀態劃分來統計單詞個數,這是為後面任務的完成做了鋪墊
通過三種狀態來判斷指標的位置,從而達到計算是否未正確單詞,是否有非法符號存在等情況。如果按照正確情況是,指標就會通過正常的狀態變化從而計算單詞數目
#define start 0
#define in_word 1
#define out_word 2
#define pointerror 3
//檢測單詞數目
struct words
;words words_number
(char
*str)
else
else
break
;case in_word:if(
!isalpha
(*str)
)//else keeping in_word
else word.state = out_word;
}break
;case out_word:if(
isalpha
(*str)&&*
(str-1)
==' '
)//else keeping out_word
break;}
str++;}
}return word;
}
需要知道的是我的英文長句的**是從檔案獲取的,其次我的單詞去路是通過函式指標傳走的,如果你不需要傳遞到其他模組進行操作,那麼也可以改為存放在某個位置
其次要明白的是,該操作是建立在上面單詞計數的基礎上完成的。可能與看官的思路不同,但是我想說明的是如何通過
狀態變化的方式從而達到我們需要的計數和分割操作。
//函式指標
typedef
void
(*fun)
(char
*word)
;//解析函式
void
parse
(char
*file_name,fun fun_name)
;#define start 0
#define in_word 1
#define out_word 2
void
parse
(char
*file_name, fun fun_name)
;char
*p = buffer;
int state = start;
//正常單詞
while(!
feof
(fp)
)//判斷檔案 是否讀到末尾,如果未讀到末尾,則返回假,然後求反
else
break
;case in_word:if(
!isalpha
(ch)
)//else keeping in_word
else
}else
*p = ch;
break
;case out_word:if(
isalpha
(ch)&&*
(p -1)
==' '
)//else keeping out_word
else p--
;break;}
p++;}
}fclose
(fp)
;}
c 翻轉乙個長句中的每個單詞
問題 輸入 how are you baby 輸出 woh era uoy ybab include include define swap a,b a b b a a b char sentencereverse char input if r 0 break return inp int mai...
C語言 最長單詞
演算法提高 最長單詞 時間限制 1.0s 記憶體限制 512.0mb 編寫乙個函式,輸入一行字元,將此字串中最長的單詞輸出。輸入僅一行,多個單詞,每個單詞間用乙個空格隔開。單詞僅由小寫字母組成。所有單詞的長度和不超過100000。如有多個最長單詞,輸出最先出現的。樣例輸入 i am a studen...
單詞計數(C語言)
題目 統計行數,單詞數與字元數,這裡單詞的定義是不包含任何空格,換行,製表符的字串行。方法1 該方法是自己沒看書中 根據 塊下面思路提示編寫的 include include define out 0 define in 1 intmain else if state in printf 輸入的字元...