应该是因为数组a的长度不够,使用strcat()函数将字符数组b中的字符复制到字符数组a中时,数组越界,所以报错了;
将字符数组a定义为一个较长的字符数组即可。
测试如下:
参考链接:
C语言 char*和char[]用法_c语言char*-CSDN博客
文章浏览阅读7.3w次,点赞75次,收藏288次。char []定义的是一个字符数组,注意强调是数组。char * 定义的是一个字符串指针,注意强调是指针。char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以:当char *s = “hello”;后,不能使用s[0]=‘a’;语句进行赋值。这是将提示内存不能为"written"。当用char s[]=“hello”;后,完全可以使用s[..._c语言char*
https://blog.csdn.net/imxlw00/article/details/92105004
C 库函数 – strcat() | 菜鸟教程
C 库函数 - strcat() C 标准库 - <string.h> 描述 C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。 声明 下面是 strcat() 函数的声明。 char *strcat(char *dest, const char *src) 参数 dest -- 指向目..
https://www.runoob.com/cprogramming/c-function-strcat.html
C\C++中strcat()函数_c++ strcat-CSDN博客
文章浏览阅读10w+次,点赞11次,收藏55次。将两个char类型链接。char d[20]="GoldenGlobal"; char *s="View"; strcat(d,s);结果放在d中printf("%s",d);输出 d 为 GoldenGlobalView (中间无空格)d和s所指内存区域不可以重叠且d必须有足够的空间来容纳s的字符串。返回指向d的指针。C函数_c++ strcat
https://blog.csdn.net/smf0504/article/details/52055971
C语言 char*和char[]用法_c语言char*-CSDN博客
文章浏览阅读7.3w次,点赞75次,收藏288次。char []定义的是一个字符数组,注意强调是数组。char * 定义的是一个字符串指针,注意强调是指针。char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以:当char *s = “hello”;后,不能使用s[0]=‘a’;语句进行赋值。这是将提示内存不能为"written"。当用char s[]=“hello”;后,完全可以使用s[..._c语言char*
https://blog.csdn.net/imxlw00/article/details/92105004
C语言基础——sizeof的用法总结-CSDN博客
文章浏览阅读10w+次,点赞348次,收藏1.2k次。sizeof是C语言中保留关键字,也可以认为是一种运算符,单目运算符。常见的使用方式:int a=10;int arr=[1,2,3];char str[]="hello";int len_a = sizeof(a);int len_arr = sizeof(arr);int len_str = sizeof(str)printf("len_a=%d,len_arr=%d,le..._sizeof的用法
https://blog.csdn.net/u013812502/article/details/81198452
【C语言】字符串的三种“方便的”初始化方法及其区别_字符数组初始化的三种方式-CSDN博客
文章浏览阅读3.2k次。前言本文中出现的 puts() 、strlen() 函数需引入 string.h 头文件#include 方法1 运用字符数组//初始化char str1[]="happy";//输出puts(str1);//顺便看看长度printf("str1的长度为:%d\n\n",strlen(str1));运行结果:方法2 运用指向字符串的指针//初始化char *str2="birthday";//输出puts(s.._字符数组初始化的三种方式
https://blog.csdn.net/KinglakeINC/article/details/114241650
int main(void){
// https://blog.csdn.net/imxlw00/article/details/92105004
// https://www.runoob.com/cprogramming/c-function-strcat.html
// 因为下面使用了strcat()函数将字符数组b中的字符,添加到字符数组a
// 而字符数组a的长度初始就固定了,所以再起尾部再追加字符会数组越界
// 所以这里可以将字符数组a定义为一个较长的字符数组,如12,以便可以在后面添加字符
char a[12] ="EFGH",b[]="efgh",str[50]="xyz";
// https://blog.csdn.net/smf0504/article/details/52055971
strcpy(str,strcat(a,b));
printf("%s",str);
// https://blog.csdn.net/imxlw00/article/details/92105004
// https://blog.csdn.net/u013812502/article/details/81198452
// https://blog.csdn.net/KinglakeINC/article/details/114241650
// 打印各数组里的字符串,以及它所占用空间的字节数,以观察其存储的字符串是否越界
printf("\na=%s, sizeof(a)=%d\n",a,sizeof(a));
printf("b=%s, sizeof(b)=%d\n",b,sizeof(b));
printf("str=%s, sizeof(str)=%d\n",str,sizeof(str));
return 0;
}