向动态字符数组添加反斜杠
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 终止符需要额外的字节。铸造 malloc
是 unnecessary.
strcat
对字符串进行操作。 '\'
不是字符串。应该是:
strcat(arr, "\");
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 终止符需要额外的字节。铸造 malloc
是 unnecessary.
strcat
对字符串进行操作。 '\'
不是字符串。应该是:
strcat(arr, "\");