2013-05-25 31 views
0

這類似於什麼,我試圖做(我跳過代碼檢查是否分配內存)的東西:它達到的strcatç動態內存/ 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); 

程序崩潰之後。我無法弄清楚什麼可能是錯的。

回答

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");