2013-02-05 63 views
-2

我需要編寫一個程序來讀取一個句子並輸出句子中的單詞數。我已經完成了該程序,但問題是我的程序正在計算字符之間的空格。如何省略這些空格,並只顯示字符串中的字數?我想我需要一些類型的循環,但我不知道如何執行它。如何省略字符串中的空格

#include<stdlib.h> 
#include<stdio.h> 
#include<string.h> 
#define pause system("pause") 

main() { 
char mystring[155]; 
int counter = 0; 

printf("Enter your name: "); 
scanf("%[^\t\n]", &mystring); 
printf("Your name is %s\n", mystring); 

// find out the number of characters in the string 
counter = strlen(mystring); 
printf("There are %i words in the sentence. \n", counter); 

// find out how many WORDS are in the sentence. Omit spaces 



pause; 
} // end of main 
+0

提示:覺得你需要一個循環在那裏,數的話,跳過標點字符,但我不會爲你寫程序。 –

+0

google爲'strtok()' –

+0

單詞或字符?你說的話,但你的代碼似乎在計算字符。 –

回答

0

再次,正如有人已經說過,使用strtok。如果您需要了解更多關於它, http://www.cplusplus.com/reference/cstring/strtok/

如果你想這樣做,而無需使用任何現有的API(我不知道你爲什麼會想這樣做,除非它是一類項目),然後創建一個簡單的使用指針遍歷字符串並在遞增計數時跳過空格的算法。

正如人們之前所說,這對你來說是一個很好的鍛鍊,所以不要問代碼。而且總是有谷歌..

0

你的函數看起來是這樣的:

_getNumberOfWords(char[] string) { 
    int count = 0; 
    for (int i=0; string[i] != '\0'; i++) { 
     if (string[i] == " ") { 
     for (int j=i; string[j] != '\0'; j++) { 
      // This is to handle multiple spaces 
      if (string[j] != " ") break; 
     } 
     count++; 
    } 
    return count; 
} 

您也可以嘗試做一個:

char * strtok (char * string, const char * " "); 
相關問題