1

这类似于我正在尝试做的事情(我跳过了检查内存是否已分配的代码):

    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 后崩溃。我想不出什么可能是错的。

4

2 回答 2

3

当您分配时,tempQuestion.link = "stackoverflow.com" 您会更改指针tempQuestion.link。您想使用 strncpy 复制字符串。

将最后两行更改为

strncpy(tempQuestion.link, "stackoverflow.com", length);
strcat(tempQuestion.link, tempString);
于 2013-05-25T14:40:19.287 回答
1

以下行导致错误,

tempQuestion.link = "stackoverflow.com";

而是复制如下,

strcpy(tempQuestion.link, "stackoverflow.com");
于 2013-05-25T14:44:32.433 回答