errno_t strcat_s( char *strDestination, size_t numberOfElements, const char *strSource);
出现问题都是在第二个参数。第二个参数的大小是前后两个字符串的和再加1,1是结束符大小。
可以使用strlen(char* buf);来获取前后字符串的大小,再加起来+1.
不能用sizeof(char* buf);
我上一个代码就用的sizeof,结果总是不对。
一个简单的对比代码:
int main()
{
char* buffer;
buffer = (char *)malloc(MAX);
memset(buffer, 0, MAX);
strcat_s(buffer, sizeof("select code,name from users where ID = "), "select code,name from users where ID = ");
int p = strlen(buffer) + strlen(ID) + 1;
cout << p << endl;//值为41
p = sizeof(buffer)+sizeof(ID);
cout << p << endl;//值为16
strcat_s(buffer, p, ID);
}
OK,上一个代码解决一个小问题。