不能将多个字符strcat_s到字符串指针

时间:2016-09-24 15:53:50

标签: c

我试图将多个字符串连接到我已分配内存的字符串指针。这是一个例子:

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缓冲区太小。'但我有摩托车的记忆!为什么这不起作用?

1 个答案:

答案 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");