Error[8]: Undefined offset: 1, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

首先要明确strcat的功能是:将参数dest字符串和参数src字符串拼接起来

目录

函数介绍

与strncat的区别

函数实现:

用法示例:

结果展示:

函数介绍


函数原型:char* strcat(char* dest,const char* src)

头  文  件:#include
返 回 值:返回dest字符串起始地址
说  明:
1、dest和src字符串必须’\0’结束
2、目标空间必须可修改(前面不能加const并且不能说常量字符串)
3、 dest最后的结束字符’\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\0’
4、dest与src所指的内存空间不能重叠

5、dest要有足够的空间来容纳要复制的字符串。


6、字符串不可以连接字符串本身:自己连接自己就会覆盖\0,这样就会死循环

与strncat的区别

大家可以先对比一下两个函数:

char* My_strcat(char* dest, const char* src)

char* My_strncat(char* dest, const char* src, int n)

1、strcat()增加字符串的结束条件是src == ‘\0’;

     strncat的循环结束的条件则是所要追加的字符串个数为0;

2、strcat() 函数把源字符串整个连接到目标字符串的后面;

      strcat()方便之处在于只用传两个参数可以实现,比较简便;

      strncat()用来连接源字符串的前n个字符到目标字符串后,所以要多传一个参数n

3、strcat本质上是把目标字符串的’\0’与源字符串的元素交换实现的,当连接的是自己的时候,就          会陷入死循环,那么这时只能使用strncat函数了
建议:建议采用strncat(),因为不会出现上述的陷入死循环的可能,并且strncat()有一个不可或缺            的优势,就是能够自由控制要增加的字符个数

函数实现:
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);  //保证dest、src非空
	char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到
	while (*dest != '[+++]')  //用指针往后一个个找,找到dest结尾的‘[+++]’
	   dest++;
	while ((*dest++ = *src++) != '[+++]')//把src里的字符一个个放入dest后
		;
	return ret;  //返回dest字符串起始地址
}
用法示例:
#include 
#include
#include 
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);  //保证dest、src非空
	char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到
	while (*dest != '\0')  //用指针往后一个个找,找到dest结尾的‘\0’
	   dest++;
	while ((*dest++ = *src++) != '\0')//把src里的字符一个个放入dest后
		;
	return ret;  //返回dest字符串起始地址
}
int main()
{
	char arr1[20] = "I LOVE YOU";
	My_strcat(arr1, " SORRY" );
	//经过函数My_strcat后 ,arr1里应该是字符串I LOVE YOU SORRY
	printf("arr1: %s\n", arr1);
	return 0;
}
结果展示:

 

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 2, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

首先要明确strcat的功能是:将参数dest字符串和参数src字符串拼接起来

目录

函数介绍

与strncat的区别

函数实现:

用法示例:

结果展示:

函数介绍


函数原型:char* strcat(char* dest,const char* src)

头  文  件:#include
返 回 值:返回dest字符串起始地址
说  明:
1、dest和src字符串必须’\0’结束
2、目标空间必须可修改(前面不能加const并且不能说常量字符串)
3、 dest最后的结束字符’\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\0’
4、dest与src所指的内存空间不能重叠

5、dest要有足够的空间来容纳要复制的字符串。


6、字符串不可以连接字符串本身:自己连接自己就会覆盖\0,这样就会死循环

与strncat的区别

大家可以先对比一下两个函数:

char* My_strcat(char* dest, const char* src)

char* My_strncat(char* dest, const char* src, int n)

1、strcat()增加字符串的结束条件是src == ‘\0’;

     strncat的循环结束的条件则是所要追加的字符串个数为0;

2、strcat() 函数把源字符串整个连接到目标字符串的后面;

      strcat()方便之处在于只用传两个参数可以实现,比较简便;

      strncat()用来连接源字符串的前n个字符到目标字符串后,所以要多传一个参数n

3、strcat本质上是把目标字符串的’\0’与源字符串的元素交换实现的,当连接的是自己的时候,就          会陷入死循环,那么这时只能使用strncat函数了
建议:建议采用strncat(),因为不会出现上述的陷入死循环的可能,并且strncat()有一个不可或缺            的优势,就是能够自由控制要增加的字符个数

函数实现:
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);  //保证dest、src非空
	char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到
	while (*dest != '')  //用指针往后一个个找,找到dest结尾的‘[+++]’
	   dest++;
	while ((*dest++ = *src++) != '[+++]')//把src里的字符一个个放入dest后
		;
	return ret;  //返回dest字符串起始地址
}
用法示例:
#include 
#include
#include 
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);  //保证dest、src非空
	char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到
	while (*dest != '\0')  //用指针往后一个个找,找到dest结尾的‘\0’
	   dest++;
	while ((*dest++ = *src++) != '\0')//把src里的字符一个个放入dest后
		;
	return ret;  //返回dest字符串起始地址
}
int main()
{
	char arr1[20] = "I LOVE YOU";
	My_strcat(arr1, " SORRY" );
	//经过函数My_strcat后 ,arr1里应该是字符串I LOVE YOU SORRY
	printf("arr1: %s\n", arr1);
	return 0;
}
结果展示:

 

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 3, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

首先要明确strcat的功能是:将参数dest字符串和参数src字符串拼接起来

目录

函数介绍

与strncat的区别

函数实现:

用法示例:

结果展示:

函数介绍


函数原型:char* strcat(char* dest,const char* src)

头  文  件:#include
返 回 值:返回dest字符串起始地址
说  明:
1、dest和src字符串必须’\0’结束
2、目标空间必须可修改(前面不能加const并且不能说常量字符串)
3、 dest最后的结束字符’\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\0’
4、dest与src所指的内存空间不能重叠

5、dest要有足够的空间来容纳要复制的字符串。


6、字符串不可以连接字符串本身:自己连接自己就会覆盖\0,这样就会死循环

与strncat的区别

大家可以先对比一下两个函数:

char* My_strcat(char* dest, const char* src)

char* My_strncat(char* dest, const char* src, int n)

1、strcat()增加字符串的结束条件是src == ‘\0’;

     strncat的循环结束的条件则是所要追加的字符串个数为0;

2、strcat() 函数把源字符串整个连接到目标字符串的后面;

      strcat()方便之处在于只用传两个参数可以实现,比较简便;

      strncat()用来连接源字符串的前n个字符到目标字符串后,所以要多传一个参数n

3、strcat本质上是把目标字符串的’\0’与源字符串的元素交换实现的,当连接的是自己的时候,就          会陷入死循环,那么这时只能使用strncat函数了
建议:建议采用strncat(),因为不会出现上述的陷入死循环的可能,并且strncat()有一个不可或缺            的优势,就是能够自由控制要增加的字符个数

函数实现:
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);  //保证dest、src非空
	char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到
	while (*dest != '')  //用指针往后一个个找,找到dest结尾的‘’
	   dest++;
	while ((*dest++ = *src++) != '[+++]')//把src里的字符一个个放入dest后
		;
	return ret;  //返回dest字符串起始地址
}
用法示例:
#include 
#include
#include 
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);  //保证dest、src非空
	char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到
	while (*dest != '\0')  //用指针往后一个个找,找到dest结尾的‘\0’
	   dest++;
	while ((*dest++ = *src++) != '\0')//把src里的字符一个个放入dest后
		;
	return ret;  //返回dest字符串起始地址
}
int main()
{
	char arr1[20] = "I LOVE YOU";
	My_strcat(arr1, " SORRY" );
	//经过函数My_strcat后 ,arr1里应该是字符串I LOVE YOU SORRY
	printf("arr1: %s\n", arr1);
	return 0;
}
结果展示:

 

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
strcat函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strncat的区别)_C_内存溢出

strcat函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strncat的区别)

strcat函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strncat的区别),第1张

首先要明确strcat的功能是:将参数dest字符串和参数src字符串拼接起来

目录

函数介绍

与strncat的区别

函数实现:

用法示例:

结果展示:

函数介绍


函数原型:char* strcat(char* dest,const char* src)

头  文  件:#include
返 回 值:返回dest字符串起始地址
说  明:
1、dest和src字符串必须’\0’结束
2、目标空间必须可修改(前面不能加const并且不能说常量字符串)
3、 dest最后的结束字符’\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\0’
4、dest与src所指的内存空间不能重叠

5、dest要有足够的空间来容纳要复制的字符串。


6、字符串不可以连接字符串本身:自己连接自己就会覆盖\0,这样就会死循环

与strncat的区别

大家可以先对比一下两个函数:

char* My_strcat(char* dest, const char* src)

char* My_strncat(char* dest, const char* src, int n)

1、strcat()增加字符串的结束条件是src == ‘\0’;

     strncat的循环结束的条件则是所要追加的字符串个数为0;

2、strcat() 函数把源字符串整个连接到目标字符串的后面;

      strcat()方便之处在于只用传两个参数可以实现,比较简便;

      strncat()用来连接源字符串的前n个字符到目标字符串后,所以要多传一个参数n

3、strcat本质上是把目标字符串的’\0’与源字符串的元素交换实现的,当连接的是自己的时候,就          会陷入死循环,那么这时只能使用strncat函数了
建议:建议采用strncat(),因为不会出现上述的陷入死循环的可能,并且strncat()有一个不可或缺            的优势,就是能够自由控制要增加的字符个数

函数实现:
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);  //保证dest、src非空
	char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到
	while (*dest != '')  //用指针往后一个个找,找到dest结尾的‘’
	   dest++;
	while ((*dest++ = *src++) != '')//把src里的字符一个个放入dest后
		;
	return ret;  //返回dest字符串起始地址
}
用法示例:
#include 
#include
#include 
//dest为前面的字符串,src为后面要加的字符串
//dest因为内存要改变,所以不能加const,而src加上更好
char* My_strcat(char* dest, const char* src)
{
	assert(dest != NULL && src != NULL);  //保证dest、src非空
	char* ret = dest;    //将dest首地址储存在ret中,在之后dest++运算中,可以方便找到
	while (*dest != '\0')  //用指针往后一个个找,找到dest结尾的‘\0’
	   dest++;
	while ((*dest++ = *src++) != '\0')//把src里的字符一个个放入dest后
		;
	return ret;  //返回dest字符串起始地址
}
int main()
{
	char arr1[20] = "I LOVE YOU";
	My_strcat(arr1, " SORRY" );
	//经过函数My_strcat后 ,arr1里应该是字符串I LOVE YOU SORRY
	printf("arr1: %s\n", arr1);
	return 0;
}
结果展示:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/565268.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-06
下一篇 2022-04-06

发表评论

登录后才能评论

评论列表(0条)

保存