向动态字符数组添加反斜杠

Adding a backslash to a dynamic char array

int main(int argc, char *argv[])
{
    char *arr;

    arr = (char*)malloc((strlen(argv[1]) + 1) * sizeof(char));//1 additional byte for the backslash.
    strcpy(arr, argv[1]);
    strcat(arr, '\');

    return 0;
}

在这段代码之后我得到 Access violation reading 错误。
基本上我只是想将反斜杠附加到包含程序第一个参数的动态字符串。

这可能是错误的:

arr = (char*)malloc((strlen(argv[1]) + 1) * sizeof(char));

argv[1]+1 是第二个参数(如果存在)。你想要:

arr = malloc(strlen(argv[1]) + 2);

我简化了这一行很多,因为 sizeof(char) 根据定义是 1 并添加 2 而不是 1 因为 nul 终止符需要额外的字节。铸造 mallocunnecessary.

strcat 对字符串进行操作。 '\' 不是字符串。应该是:

strcat(arr, "\");