typedef struct NODE{
char *word;
struct NODE *next;
}node;
node *newNode(char *word) {
node *pNode = (node*) malloc(sizeof(node));
pNode->word = word;
pNode->next = NULL;
return pNode;
}
void append(node **ppList, char *word) {
if(*ppList == NULL)
*ppList = newNode(word);
else {
node *tmpList = *ppList;
for(; tmpList->next!=NULL; tmpList=tmpList->next);
tmpList->next = newNode(word);
}
}
void printList(node *list) {
for(; list!=NULL; list=list->next)
printf("[%s]=>", list->word);
printf("NULL");
}
/*=== CODE 1 ===*/
int main() {
char word[MAXCHAR], word2[MAXCHAR], word3[MAXCHAR];
node *list=NULL;
scanf("%s", &word); /* key in AAA */
append(&list, word);
scanf("%s", &word2); /* key in BBB */
append(&list, word2);
scanf("%s", &word3); /* key in CCC */
append(&list, word3);
printList(list);
return 0;
}
/*=== CODE 2 ===*/
int main() {
char word[MAXCHAR];
node *list=NULL;
scanf("%s", &word); /* key in AAA */
append(&list, word);
scanf("%s", &word); /* key in BBB */
append(&list, word);
scanf("%s", &word); /* key in CCC */
append(&list, word);
printList(list);
return 0;
}
Выходы:
=== CODE 1 OUTPUT ===
[AAA]=>[BBB]=>[CCC]=>NULL /* it works */
=== CODE 2 OUTPUT ===
[CCC]=>[CCC]=>[CCC]=>NULL /* doesnt work, why? */
Привет, я пытаюсь зациклить эту вещь, тогда я понял, что это дало неправильный результат. Я изолировал свою программу и обнаружил, что проблема в вводе данных, я попробовал scanf и получил, что оба не работают. Почему я не могу использовать обратно массив символов для хранения ввода, может кто-нибудь помочь мне с этим, пожалуйста.