だから私は次の機能を持っています:
void tokenize() {
char *word;
char text[] = "Some - text, from stdin. We'll see! what happens? 4ND 1F W3 H4V3 NUM83R5?!?";
int nbr_words = 0;
word = strtok(text, " ,.-!?()");
while (word != NULL) {
printf("%s\n", word);
word = strtok(NULL, " ,.-!?()");
nbr_words += 1;
}
}
出力は次のとおりです。
Some
text
from
stdin
We'll
see
what
happens
4ND
1F
W3
H4V3
NUM83R5
13 words
基本的に私がやっていることは、テキストの段落を単語にトークン化して、後でさらに分析することです。テキストと区切り文字があります。唯一の問題は、残りのすべての区切り文字と同時に数字をトークン化することです。で使えることが分かりisdigit
ましたctype.h
。ただし、それを に含める方法がわかりませんstrtok
。
例(明らかに間違っています):strtok(paragraph, " ,.-!?()isdigit()");
それらの線に沿った何か。しかし、私はこの段階で各トークン (単語) を持っているので、各単語をさらにトークン化し、数字で分割するために使用できるある種の後処理if
ステートメントはありますか?
たとえば、出力はさらに次のように劣化します。
ND
F
W
H
V
NUM
R
15 words // updated counter to include new tokens