Вставить строку или символ в связанный список C - PullRequest
0 голосов
/ 02 декабря 2018

Я хотел бы понять, как правильно сохранить определенную строку в связанном списке.

Например, список определен:

typedef struct node {
int code;
char surname[n];
struct node *next;
}Student;
typedef Student *List;

Правильно ли определение?

Или я должен вставить указатель на символ?например char *pc?

Вопрос в том, как правильно сохранить фамилию, если мне нужно было вставить значение в «код», это относительно просто, потому что я просто, например, объявляю указатель «aux», а затемaux-> code = x, где x - целое число.

Проблема в том, как сканировать или как поместить строку символов в фамилию [n], например, вызвать функцию.

Например, создать другой вектор размера n,vet [n] просканирует этот файл и назначит aus->surname = vet[n], сработает?

Другая информация, может быть связанная с первым вопросом, может ли размер массива, определенного в структуре, быть переменной?

1 Ответ

0 голосов
/ 03 декабря 2018

То, как вы его определяете n должно быть постоянной времени компиляции;так что - относительно последней части вопроса - n не может варьироваться от объекта к объекту и, следовательно, не имеет смысла в самом struct.

Разница между *surname и surname[n] заключается в том, что вынужно выделить для него память, используя malloc, тогда как последний обеспечивает память внутри каждого объекта.Оба будут работать;Однако присвоение массива не будет работать ни в одном из случаев:

char* surname;
...
char vec[100];
scanf("%99s",vec);
surname = malloc(strlen(vec)+1);
strcpy(surname,vec);

Не забудьте free фамилию, как только объект будет отброшен.

или:

char surname[100];
...
char vec[100];
scanf("%99s",vec);
strcpy(surname,vec);
...