文字列内の単語の出現をカウントしようとしています。文字列Sの場合、各単語と、この単語が文字列に存在する回数を表示する必要があります。
例:
string = ";! one two, tree foor one two !:;"
結果:
one: 2
two: 2
tree: 1
foor: 1
これが私のコードですが、正しいカウントを返していません:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int count_word(char * mot, char * text) {
int n = 0;
char *p;
p = strstr(text, mot);
while (p != NULL) {
n++;
p = strstr(p + 1, mot);
}
return n;
}
void show_all_words(char * text) {
char * p = strtok(text, " .,;-!?");
while (p != NULL) {
printf ("%s : %d\n", p, count_word(p, text));
p = strtok(NULL, " .,;-!?");
}
}
int main(char *argv[]) {
char text[] = ";! one two, tree foor one two !:;";
show_all_words(&text);
return (EXIT_SUCCESS);
};
戻ってきます:
one : 1
two : 0
tree : 0
foor : 0
one : 1
two : 0
: : 0