// cpp : 从键盘输⼊长度不等的两个字串,将短串连接于长串之后输出。
//
#include <iostream>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
char str1[100], str2[100];
scanf_s("%s", str1,sizeof(str1));
scanf_s("%s", str2, sizeof(str2));
int len = strlen(str1) + strlen(str2) + 1;
if (strlen(str1) > strlen(str2))
{
cout << strcat_s(str1, len, str2) << endl;
}
else
cout << strcat_s(str2, len, str1) << endl;
}
errno_t strcat_s(char *strDestination , size_t numberOfElements , const char *strSource );
strcat_s函数返回值是是否有错误,因为没错误,所以你输出了0
如果要输出最终字符串,那么写合并,然后cout<<str1<<endl;
strcat_s把两个字符串连起来放在第一个里面,但是它本身不会返回第一个字符串的指针
应该是
strcat_s(str1, len, str2);
cout << str1 << endl;
根据参考资料和你提供的错误信息,错误的原因是str1的长度超过了它的容量。解决这个问题的方法是为str1声明一个更大的数组。
char str1[100] = "Hello ";
char str2[50] = "world!";
strcat_s(str1, sizeof(str1), str2);
这样,str1的容量将能够容纳拼接后的字符串。请注意,我在这里将str1的容量增加到了100,你可以根据实际需要来调整容量的大小。
如果你在代码中已经使用了str1的长度超过了它的容量的字符串拼接,那么你需要使用动态内存分配来解决这个问题。下面是一个使用动态内存分配的示例代码:
char* str1 = malloc(strlen("Hello ") + strlen("world!") + 1);
strcpy(str1, "Hello ");
strcat_s(str1, sizeof(str1), "world!");
这里我使用了malloc函数来动态分配足够的内存来存储拼接后的字符串。请确保在使用完后调用free函数来释放内存。