我试图将多个字符串连接到我已分配内存的字符串指针。这是一个例子:
char *finalNumString = malloc(sizeof(char)*1024);
finalNumString[0] = '\0';
strcat_s(finalNumString, 10, "abcabcabc");
printf("added %d chars to finalNumString\n", 10);
strcat_s(finalNumString, 10, "abcabcabc");
printf("added %d chars to finalNumString\n", 10);
strcat_s(finalNumString, 10, "abcabcabc");
printf("added %d chars to finalNumString\n", 10);
在第一个strcat_s命令之后,我得到错误' Debug断言失败:L缓冲区太小。'但我有摩托车的记忆!为什么这不起作用?
答案 0 :(得分:2)
根据 msdn page of strcat_s()
函数,它的定义是:
errno_t strcat_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
此处,numberOfElements
指的是目标字符串缓冲区的大小。因此,每次以这种方式使用1024
函数时,您需要将10
(目标字符串的大小)作为第二个参数而不是strcat_s()
发送:
strcat_s(finalNumString, 1024, "abcabcabc");