Попытка взять несколько имен файлов у пользователя в командной строке и сохранить их в связанном списке, но я получаю ошибку сегментации. Идея состоит в том, чтобы пользователь вводил каждое имя файла, а затем вводил «q», когда они были закончены.Назначение нового значения для строки - C
Я ввожу первое имя файла "man_on_moon.txt" и никаких ошибок не возникает. После ввода второго «sat_moons_rings.txt» я получаю .. Ошибка сегментации: 11 Я считаю, что это происходит в моем назначении char * name, но я не уверен.
char *name = malloc(sizeof(char) *50);
scanf("%s", name);
list *curr, *head;
curr = malloc(sizeof(list));
head = malloc(sizeof(head));
if(name != "q")
{
curr->item = name;
head->next = curr;
curr = curr->next;
scanf("%s", name);
}
while(name != "q")
{
curr->item = name;
curr = curr->next;
scanf("%s", name);
}
Вы выделяете только одну строку. Каждый раз, когда вы выполняете 'scanf («% s », name)', вы будете перезаписывать одни и те же строковые данные. –
Эта строка немного рыбная: «' head = malloc (sizeof (head)); '' Может быть, просто опечатка, но 'head' и' curr' являются указателями того же типа, но им назначаются блоки разного размера ... –