int verify(char filename[], int filenameLength) // If f.ex. filename is "x.txt" then filenameLength is 5
{
    char* filenameCorrect = malloc(sizeof(char) * (filenameLength + 9));
    filenameCorrect = "correct_";
    strcat(filenameCorrect, filename);

    ...
}

每次运行此命令时,都会出现以下异常:“访问冲突写入位置”。

最佳答案

filenameCorrect是指针,而不是保存字符的变量,而是指向内存中指定用于保存字符的某个区域的指针。在第二行中,您将重新分配filenameCorrect以指向作为代码一部分编译的字符串,因此无法更改该错误。
您需要的是将字符串"correct_"复制到内存中分配的区域。所以使用:

strcpy(filenameCorrect, "correct_");

然后您就可以安全地使用strcat

关于c - Strcat()引发访问冲突异常。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43528062/

10-11 23:01