统计一个字符串中的单词数
1.思路分析:
????單詞的數目可以有空格出現的次數來進行統計,判定原則:當出現“?*?空格+字母*?”的組合是,認定一個單詞出現。但是需要注意以下幾點:
(1)字符串默認:字符串中只包含空格和字母2種字符,不會出現別的特殊字符;?
(2)字符開頭的空格不在計算內:因此fspace初始值為1?
2.實現代碼:
#include <stdio.h> #include <stdlib.h>int main() {char *p = NULL;char *q = NULL;int num = 0;int fspace = 1; //注意:fspace初始化必須是1;p = (char*)malloc(1);gets(p);q = p;while(*q != '\0'){if(*q == ' '){fspace = 1;}else{if(fspace==1){num++;fspace = 0; //注意:一定要將fspace清0;}}q++;}printf("num = %d",num);free(p);p = q = NULL;return 0; }3.注意事項:?
(1)malloc需要和free配合使用,避免內存泄露;?
(2)指針在使用完畢后,需要指向NULL,避免成為野指針;?
(3)注意p的值,以及p+1的值:?
????????????p的值:malloc調用后,系統在堆中分配的一個字節內存的地址address。?
????????????p?+1:即上述address+1;?
????但是:系統分配時,可以確定address對應的內存是空閑態(未被使用),因此分配給p;但是并不能確定address+1的內存也是空閑態。當值給p分配一個字節內存但是其指向一個字符串時,字符串會依次保存在address與其之后的部分內存中。因此,本人認為:p = (char*)malloc(1)操作是有風險的。?
(4)C語言中:在不確定輸入字符串的長度時,應該將緩存區設置大一些,設置1024,即1k byte(雖然還是可能會出現越界)。可以采用2種方式保存字符串:數組和字符串指針。?
具體方式:char array[1024];或char?p = (char)malloc(1024)等于char?p = (char)malloc(1024*sizeof(char));;
總結
以上是生活随笔為你收集整理的统计一个字符串中的单词数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言二级指针与典型应用(1)
- 下一篇: C++STL之vector的说明及使用