-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
4

2 に答える 2

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 * " " );
于 2013-02-05T19:51:34.083 に答える
0

繰り返しますが、誰かがすでに言ったように、strtok を使用してください。詳細については、 http://www.cplusplus.com/reference/cstring/strtok/を参照してください。

既存の API を使用せずにそれを実行したい場合 (クラス プロジェクトでない限り、なぜそれを実行したいのかわかりません)、文字列を走査し、カウントをインクリメントしながらスペースをスキップするポインターを使用して単純なアルゴリズムを作成します。

人々が以前に言ったように、これはあなたにとって良い練習になるので、コードを求めないでください。そして、常にグーグルがあります..

于 2013-02-05T19:30:33.780 に答える