字符串的拷贝strcpy函数
- 方法一
#include<stdio.h>
#include<string.h>
#include<assert.h>
void my_strcpy(char* dest, const char* src)
{
assert(dest != NULL && src != NULL);
int i = 0;
while (src[i]!='\0')//*src!='\0'
{
dest[i] = src[i];//*dest++=*src++;
++i;
}
dest[i] = '\0';
}
int main()
{
char stra[30] = { "hello" };
char strb[30];
char strc[30];
my_strcpy(strb, stra);
my_strcpy(strc, strb);
printf("%s\n", strb);
printf("%s\n", strc);
return 0;
}
- 方法二
void my_strcpy(char* dest, const char* src)
{
assert(dest != NULL && src != NULL);
while (*src!='\0')
{
*dest=*src;
dest++;
src++;//也可直接写成*dest++=*src++;
}
*dest = '\0';
}
int main()
{
char stra[30] = { "hello" };
char strb[30];
char strc[30];
my_strcpy(strb, stra);
my_strcpy(strc, strb);
printf("%s\n", strb);
printf("%s\n", strc);
return 0;
}
- 函数的连续拷贝
char* my_strcpy(char* dest, const char* src)
{
assert(dest != NULL && src != NULL);
char* p=dest;//用指针保存地址
while (*src!='\0')
{
*dest=*src;
dest++;
src++;//也可直接写成*dest++=*src++;
}
*dest = '\0';
return p;
}
int main()
{
char stra[30] = { "hello" };
char strb[30];
char strc[30];
my_strcpy(strc,my_strcpy(strb, stra));
printf("%s\n", strb);
printf("%s\n", strc);
return 0;
}