1.strcpy函数
**Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point). //摘自msdn
将源指向的C字符串复制到目标指向的数组中,包括终止的空字符(并在该点停止。
注意:
1.源字符串必须以 ‘\0’ 结束。
2.会将源字符串中的 ‘\0’ 拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可变**
char* my_strcpy(char* str, const char* soure)
{
char* dest = str; //定义一个char *指针变量指向str,修改str字符串的值。
assert(dest != NULL && soure != NULL);//断言函数,判断值为0时终止程序。
while (*dest++ = *soure++);//一个一个把soure的值赋给src,
//先执行=操作后执行++操作,因为=优先级高。
return str; //str还是指字符串首地址,返回它。
}
int main()
{
char str1[20]="abcdef";
char str2[20] = "ABCDEF";
my_strcpy(str1, str2);
puts(str1);
return 0;
}
运行结果:
2.strncpy函数
Copies the first num characters of source to destination. If the end of the source C string (which is signaled by a null-character) is found before num characters have been copied, destination is padded with zeros until a total of num characters have been written to it. //摘自msdn
将源的第一个数字字符复制到目标。如果在复制num个字符之前找到源C字符串的结尾(由空字符表示),则目标将用零填充,直到总共写入num个字符为止。
注意:
1.拷贝num个字符从源字符串到目标空间。
2.如果源字符串的长度小于num,则拷贝完源字符串之,后在目标的后边追加0,直到num个
char *my_strncpy(char* str, const char* soure, size_t n)//把src所指字符串的前n个字符添加
{
char *dest = str;
assert(str != NULL && soure != NULL);//注意如果assert中的值为0时直接会终止掉程序
while ((n-- > 0) && (*dest++ = *soure++));//相比strcpy函数多了一个只copy前n个字符。
return str;
}
int main()
{
char str1[20]= "abcdef";
char str2[20] = "ABCDEF";
my_strncpy(str1, str2,3);
puts(str1);
return 0;
}
运行结果: