用法:
十余年的湘潭网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整湘潭建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“湘潭网站设计”,“湘潭网站推广”以来,每个客户项目都认真落实执行。
#include string.h
在C++中,则存在于cstring头文件中。
strcat原型:
extern char *strcat(char *dest,char *src);
功能:
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明:
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
strcat()函数从名称来讲就是索的含义,用途:在一个字符串的末尾增加新的字符。
函数定义如下:
char *strcat(char *dest, const char *src);
扩展资料
代码实现如下:
char *strcat(char *dest, const char *src)
{
char *tmp = dest;
while (*dest)
dest++;
while ((*dest++ = *src++) != '\0');
return tmp;
}
实现原理:
首先dest地址移动到最后一位,然后增加src参数值遇到’\0’结束拷贝。
strcat()也存在着与strcpy()类似的问题。
1、首先打开vs2014,新建一个项目。
2、添加头文件。
3、添加main主函数。
4、定义一个函数addTwoNumbers。
5、在main函数定义a,b,sum。
6、声明函数指针ptr_sum。
7、将addTwoNumbers函数地址赋值给ptr_sum。
8、运行程序,看看结果。
总的来说,关于strcat,第一个参数所指向的内存地址要求是可写的
那么,关于你提出的,s1 = "abc"这句话的实际作用是把常量区中"abc"的首地址赋值给s1,而常量区的内存是不允许程序修改的,因此执行strcat的时候就会失败。
而改成s1[],这是作为一个栈内数组,生存空间仅在函数生命周期内,并且在该函数生命周期中,该内存地址是可读可写的,所以改变之后可以成功。
同样,如果将你的代码修改成以下形式,也可以成功
char *s1 = (char *)malloc(6 * sizeof(char));
strcpy(s1, "abc");
strcat(s1, "def");
puts(s1);
free(s1);
这样子也是可以成功的,malloc分配的内存在堆上,是用户自己管理的内存区域,也是可读可写的区域。
strcat函数作用是把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\0”)。保证*dest足够长,以容纳被复制进来的*src。*src中原有的字符不变。
strcat是把两个字符串合并到一起,比如
str1[30] = "Hello";
str2[] = " China";
strcat(str1, str2);
则str1的内容就变成"Hello China"。
扩展资料:
在C中,函数原型存在 string.h头文件中。
在C++中,则存在于cstring头文件中。
把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除*dest原来末尾的“\0”)。要保证*dest足够长,以容纳被复制进来的*src。*src中原有的字符不变。返回指向dest的指针。
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
参考资料来源:百度百科-strcat
strcat()是追加字符串的函数。
strcat(char[] a,char []b)即将第二个字符串追加到第一个字符串末尾,第二个字符串值不变,第一个变长。
你的理解是对的 但是使用有误!追加时需要保证第一个字符串在加上第二个之后依旧不能溢出。在此题中,你的a[]字符串长度在追加上".txt"之后,会溢出,建议在定义a的时候写上char a[100]保证不溢出。
1
2
3
char a[100];
scanf("%s",a);
strcat(a,".txt");
strcat()函数执行是把字符串b连接到字符串a的后边,也就要求字符串a要足够长,能装下b,而你这样定义的字符串a和b都是字符串字面量,也叫着字符串常亮,很明显前边字符串长度是固定的4字节,不仅不够增加后边字符串长度而且还是不可修改的,所以运行一定出错,要是在linux下运行将产生一个段错误。修改可以把a定义成这个样子:char
a[10]
=
"tom";