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
错误
基本上我只是试图在包含程序的第一个参数的动态字符串中附加一个反斜杠。
答案 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终结符添加额外的字节。投射malloc
为unnecessary。
strcat
对字符串进行操作。 '\\'
不是字符串。它应该是:
strcat(arr, "\\");