私はC言語ではかなり新しく、ポインタを使うのとかなり混乱します。C - 文字列から単語を抽出する
私はASCII文字列から単語を抽出しようとしています。 たとえば、文字列が@@ Hello..world >>の場合、文字列から "Hello"と "world"という単語を取り出し、それらをリンクリストに追加したいとします。
単語は任意の文字列として定義され、各単語は最大64バイトです。また、関数isspace()がゼロ以外の値を返す文字は空白と見なされます。
基本的には、fscanfを使用してファイルから文字列をスキャンしてから、各文字列に対して関数read_words(char * s)を呼び出して適切な単語を文字列から取り出し、リンクリストに追加しますつかいます。
ここで私のコードは、ポインタと関係があるエラーを投げているようです。
struct node {
char *val;
struct node *next;
int count;
} *words = NULL;
void read_words(char *s)
{
struct node *tmp;
char word[64+1];
int i, check, wordStarted = 0, count = 0;
for (i = 0; s[i] != '\0'; i++)
{
if ((isspace(s[i]) != 0) || !isalpha(s[i]))
{
if (wordStarted == 1)
{
check = check_list(word);
if (check != 1) {
word[count] = '\0';
tmp = malloc(sizeof(struct node));
tmp->val = word;
tmp->count = 1;
tmp->next = words;
words = tmp;
}
count = 0;
wordStarted = 0;
}
}
else
{
word[count++] = s[i];
wordStarted = 1;
}
}
}
これについてのお手伝いをさせていただきます。
ありがとうございました!
は 'strtok'を試してみてください。任意の数の分割文字に基づいて文字列を部分に分割します。 – chris
コードを[デバッグ](http://en.wikipedia.org/wiki/GNU_Debugger)しようとしましたか? – Zeta
check_list()の実装を投稿してください –