strcpy&strncpy模拟实现
strcpy函数意义:将源字符串拷贝到目标空间;
strncpy函数意义:拷贝num个字符从源字符串到目标空间。
strcpy:
strncpy:
strcpy:模拟实现
#include <stdio.h>
#include <assert.h>
char* my_strcpy( char*arr1,const char*arr2) //const表示源字符串不可变
{
char*ret = arr1;
assert(arr1 != NULL); //断言,检验条件是否为真
assert(arr2 != NULL);
while (*arr1++ = *arr2++)
{
;
}
return ret;
}
int main()
{
char arr1[20] = { 0 }; //目标文件
char arr2[20] = "abcdef"; //源字符串
char* ret=my_strcpy(arr1, arr2);
printf("%s", ret);
return 0;
}
strncpy:模拟实现
#include <stdio.h>
#include <assert.h>
char *my_strncpy(char* dest, const char* src, int n)
{
char* ret = *dest;
assert(dest != NULL);
assert(src != NULL);
while (n&&*(src))
{
*dest++ = *src++;
n--;
}
while (n > 0)
{
*dest++ = 0;
n--;
}
return ret;
}
int main()
{
char arr1[] = "abcde"; //目标文件
char arr2[]= "sdfg"; //源字符串
my_strncpy(arr1, arr2, 3);
printf("%s\n", arr1);
return 0;
}
在strncpy实现过程中,我发现,strncpy与strcpy的不同之处就在于 strncpy可以选择拷贝字符的个数,而strcpy是全部拷贝(前提目标空间足够大);
strncpy:
- 拷贝num个字符从源字符串到目标空间;
- 如果源字符串的长度小于num,则拷贝完源字符串后,在目标文件后追加0,
直到num个。