2013-05-25 5 views
0

Это что-то похожее на то, что я пытаюсь сделать (я пропустил код, который проверяет, если память была выделена):C динамическая память/C строка

sscanf(line, "%[^\"]\"%[^\"]", tempString, tempString); 
    int length = strlen("stackoverflow.com") + strlen(tempString); 
    tempQuestion.link = (char *)malloc((length + 1) * sizeof(char)); 
    tempQuestion.link = "stackoverflow.com"; 
    strcat(tempQuestion.link, tempString); 

сбой программы после того, как он достигнет strcat. Я не могу понять, что может быть неправильно.

ответ

3

При назначении tempQuestion.link = "stackoverflow.com" вы меняете указатель tempQuestion.link. Вы хотите использовать strncpy для копирования строки.

Изменить две последние строки в

strncpy(tempQuestion.link, "stackoverflow.com", length); 
strcat(tempQuestion.link, tempString); 
+0

Спасибо за помощь :) – user1242967

1

Следующая строка вызывает ошибку,

tempQuestion.link = "stackoverflow.com"; 

Вместо копирования следующим образом,

strcpy(tempQuestion.link, "stackoverflow.com"); 
Смежные вопросы