C语言问题,不用strcat函数,将任意两个字符串连接起来,网上的都看不懂,用问题补充的函数名开始

我是初学者,用#include<stdio.h>#include<string.h>void main(){以下不会了
2024年11月20日 19:19
有2个网友回答
网友(1):

这个其实就是让你自己写一个strcat的实现代码。

char *my_strcat(char *dest, const char *src)
{
size_t i,j;
for (i = 0; dest[i] != '\0'; i++)
;

for (j = 0; src[j] != '\0'; j++)
dest[i+j] = src[j];

dest[i+j] = '\0';

return dest;
}

测试代码:
#include
#include

char *my_strcat(char *dest, const char *src);

int main(int argc, char *argv[])
{
char str1[40] = "1st string\0";
char str2[20] = " 2nd string\0";

my_strcat(str1, str2);
printf("strcat result: %s\n", str1);
return 0;
}

输出:
strcat result: 1st string 2nd string

这个实现很简单,
dest就是合并之后的结果所在, src则是要添加的字符串;
① 找到dest的\0结尾之处。
② 然后从①的结果开始, 按src的长度, 一个个“拷贝”到dest的末尾;
③ 给添加之后的dest末尾写\0结束标记。
④ 返回dest
这个实现的接口和C标准库里面的一样,当然缺点也一样, 就是对dest和src都没有作边界校验。

如果可以用其它的字符串函数, 那么:
char* my_strcat(char*dest,constchar*src)
{
strcpy(dest +strlen(dest), src);
return dest;
}
更简单一些。 自己看看是否能理解?

网友(2):

可以使用_snprintf() 方法

char *pszBuffer = "aa";
char *pszTemp = "bb";
char szBuffer[1024] = { 0 };

_snprintf(szBuffer, sizeof(szBuffer), "%s%s", pszBuffer, pszTemp);

这是两个字符串的值就连接起来了,结果在szBuffer 里面