1、char *strcat(char *s1, const char *s2)
拼接字符串作用,把s2拼接到s1字符串后面,返回值是指向s1的指针
int main()
{
char s1[] = "aba";
char s2[] = "cdf";
printf("拼接前s1长度:%d s2长度: %d\n", strlen(s1), strlen(s2));
char *s3=strcat(s1, s2);
//s3等同于s1
printf("打印s1: %s\n", s1);
printf("打印s3: %s\n", s3);
printf("拼接后s1长度:%d s2长度: %d s3长度:%d\n", strlen(s1), strlen(s2),strlen(s3));
}
注意:s2拼接到s1后面,s1的长度会由最初的3变为6(没有算结束符),在这里程序并没有报错这是因为C语言对于数组下标越界并不会作检测处理,所以在使用strcat()函数的时候尽量给予足够大的内存空间,除了要计算拼接后的字符数另外需再加1才够空间存放末尾的空字符。所以在开始定义s1长度的时候最好考虑好拼接后的长度,这里最初的长度设为:s1的长度+s2的长度+结束符=3+3+1=7,尽管程序在缓冲区溢出后可能不会报错,但为了程序的安全性还是严谨一点好。
2、char *strstr(const char *s1, const char *s2)
查找s2第一次出现在s1的位置,返回s2第一次在s1出现的首地址,如果不存在返回NULL
int main()
{
//s2在s1中能找到
char s1[] = "acdrtcdrj";
char s2[] = "cdr";
char *s3 = strstr(s1, s2);
printf("%s\n", s3);
//str2在str1中不能找到
char str1[] = "acdrtcdrj";
char str2[] = "cdrx";
char *str3 = strstr(str1, str2);
printf("%s\n", str3);
}