向动态char数组添加反斜杠

时间:2015-05-10 21:03:25

标签: c dynamic

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错误 基本上我只是试图在包含程序的第一个参数的动态字符串中附加一个反斜杠。

1 个答案:

答案 0 :(得分:3)

这可能是错误的:

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