了解一下strcpy函数——拷贝字符串,意思就是将str2拷贝到str1上 str1原来的字符串就不见了
模拟实现strcpy函数:
my_strcpy(char* str1, char* str2)
{
assert(str1 && str2);
while (*str1++ = *str2++)
{
;
}
}
int main()
{
char str1[] = "abcd";
char str2[] = "iop";
my_strcpy(str1, str2);
printf("%s", str1);
}
但是会出现一个问题,如果str2的字符串长度比str1字符串长度长怎么办,是不是就不能拷贝过去了,这里我来给大家实验一下:
这个函数非常地豪横,我就是把你拷贝过去就完事了,我也不管够不够,我已经放过去了,爱咋地咋地!但是会报错,下面我就介绍另外一个函数来解决这个问题:
这个函数就是————strncpy函数
可以看出来,这个函数有三个参数。
下面为大家演示一下这个函数怎么用:
不报错,但是str2多少个字符就要加个for函数来打印出来,然后后面打出来的是随机字
这样就可以解决了。
strncpy函数还有一个功能:就是在str1里面将str2的字符串拷贝过去
strncpy中的str1和str2都是指数组的下面为0开始。
2.扩展----如果str2是“edf” str1是“abcd” 那么你如果想要把str2拷贝过去,str1并没有被填充满,则会输出“edfd”
#include<assert.h>
char my_strcpy(char* str1, char* str2)
{
assert(str1 && str2);
while (*str2)
{
*str1 = *str2;
str1++;
str2++;
}
}
int main()
{
char str1[] = "abcd";
char str2[] = "edf";
my_strcpy(str1, str2);
printf("%s", str1);
}