strtok()を使用して文字列をトークン化し、そのトークンをfee(char * new_word)に送信して新しいノードに割り当てる必要がある関数foo 。これですべてうまくやっていますが、foo()とfee()が終わると、リンクされたリストを表示するbar()を実行する必要があり、ノードポインタのデータが壊れているとわかりますそれ。どのようにしてトークンを保持できますか?初期化関数の終了後のストロークトークンをCで終わらせる
struct node{
char *word;
struct node *next;
};
struct node top = NULL;
void foo(){
char *str = "Some words go here";
char *token = NULL;
token = strtok(str, "\n");
while (token){
fee(token);
token = strtok(NULL, "\n");
}
}
void fee(char * new_word){
struct node *new_node = malloc(sizeof(struct node));
new_node->word = new_word;
new_node->next = head;
head = new_node;
}
bar(){
while (top){
printf("%s\n", top->word);
top = top->next;
}
}
int main(int argc, char *argv[]){
foo();
bar();
return 0;
}
おそらくトークンのコピーが必要です。あなたの実際のコードを私たちに教えてください。 [mcve]を入力してください。 – BLUEPIXY
**完全かつ検証可能な**には、実際にコンパイルされる有効なコードである必要があります。あなたの実際のコードを質問にコピーし、あなたの記憶からゆるやかに似たものを書き換えないでください。 'struct node top = NULL;'は何かエラーを出すはずです。 – Gerhardh