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 を使用して文字列をコピーします。

最後の 2 行を次のように変更します。

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 に答える