为什么VS2022总会提示strncat_s函数不接受三个参数?
errno_t strncat_s(char * restrict dest,rsize_t destsz,const char * restrict src,rsize_t count);
errno_t strncat(char * dest,const char * src,size_t count);
该回答引用GPTᴼᴾᴱᴺᴬᴵ
以下是修正后的代码:
#include <iostream>
#include <cstring>
using namespace std;
int is_string_rotate(char* arr1, char* arr2)
{
int len1 = strlen(arr1);
int len2 = strlen(arr2);
if (len1 != len2)
return 0;
strncat_s(arr1, sizeof(arr1) - len1 - 1, arr1, len1);
char* ret = strstr(arr1, arr2);
return ret != NULL;
}
int main()
{
char arr1[20] = "AABCD";
char arr2[] = "BCDAA";
int ret = is_string_rotate(arr1, arr2);
if (ret == 1)
cout << "yes\n";
else
cout << "no\n";
return 0;
}
请注意,以上代码中使用了 sizeof(arr1) - len1 - 1 来计算 strncat_s 函数的第三个参数,以确保拼接后的字符串不会超出 arr1 的长度。