C的gets和strcat的使用

例子如下:

#include<stdio.h>
#include<string.h> /*strcat头文件*/

int main()
{
	char s1[]="1,2,3,4,5",s2[]="qwer";
	gets(s1);
	puts("s1="); #会自动换行
	puts(s1);
	strcat(s1,s2);
	printf("s1的内存大小:%d\n",sizeof(s1));
	printf("%s\n",s1);
	return 0;
} 

运行结果: 输入ABC

ABC
s1=
ABC
s1的内存大小:10
ABCqwer

gets会将结束标志回车自动转换为\0,所以原有字符串其实内存大小(sizeof查看一下)是不变的,只是接下来strcat连接时以第一个参数字符串的\0为起点连接的。

可见s1内存大小是10字节,即1,2,3,4,5\0

gets(s1)之后(假设输入的是ABC回车)s1其实变成了ABC\03,4,5\0

连接时是从ABC后的\0开始连接的,所以就成了ABCqwer

猜你喜欢

转载自blog.csdn.net/weixin_44593822/article/details/108901707