-1
Я застрял на этом какое-то время, может ли кто-нибудь помочь? мой код связанного списка отлично работает для целого числа, но, похоже, не работает для строк, он только печатает последнюю запись, любую идею? ThanksСтрока Связанный список только печать последнего ввода
#include<stdlib.h>
#include<stdio.h>
#include "node.h"
#include <string.h>
typedef struct node {
char* val;
struct node* next;
}node;
int main(){
// read text file
FILE * fp;
fp = fopen ("dict.txt", "r");
// linked list
char i[10];
node* head = malloc(sizeof(node));
node* cursr=head;
while (fscanf(fp, "%s", i) !=EOF)
{
fscanf(fp, "%s", i);
//strcpy(cursr -> val,i);
cursr -> val = i;
printf("Read String1 |%s|\n", cursr->val);
node* newnode = malloc(sizeof(node));
cursr -> next = newnode;
cursr = newnode;
}
cursr->next = NULL;
cursr=head;
while (cursr -> next != NULL)
{
printf("%s",cursr->val);
cursr = cursr -> next;
}
}
Почему вы комментировали '// strcpy (cursr -> val, i);' out? Я предполагаю, что эта линия исправит вашу проблему. Предполагая, конечно, что 'cursr-> val' имеет выделенное пространство. – Kninnug
@Kninnug, который он пытался назначить в следующей строке. Он должен использовать 'strcpy'. – ameyCU
Предполагая, что '' член '' '' '' '' '' '' '' '' 'потому что вы выбрали по какой-то причине, чтобы не включать определение' node'), рассмотрите это: я вам * не * понимаю, что 'cursr-> val = i; 'просто хранит адрес буфера' i [] 'в элементе указателя' val' узла, и, таким образом, * каждый * узел в вашем списке, после его создания, имеет «val», указывающий на тот же i [ ] ', вам может потребоваться просмотреть, как работают указатели в C. – WhozCraig