解决方法:
1.strcpy函数
2.自定义函数
优化1---优化2----最优版代码
详解!!!!!!!!!!!!
有疑问乐意解答
strcpy函数
#include<stdio.h>
#include<string.h>//strcpy 所要引用的头文件
int main()
{
//strcpy函数
//字符串拷贝
char arr1[] = "#################";
char arr2[] = "bit";//"\0"也拷贝过去了
strcpy(arr1, arr2);//(地点,源头)
printf("%s\n", arr1);
return 0;
}
自定义函数
void my_strcpy(char* dest, char* src)//指针
{
//"bit"
while (*src != '\0')
{
*dest = *src;
src++;
dest++;
}
*dest = *src;//'\0'
}
#include<stdio.h>
int main()
{
char arr1[] = "#################";
char arr2[] = "bit";
my_strcpy(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
优化1
//优化版
//1.
void my_strcpy(char* dest, char* src)//指针
{
//"bit"
while (*src != '\0')
{
*dest++ = *src++;//后置++ :先使用后++
}
*dest = *src;//'\0'
}
优化2.
//2.
void my_strcpy(char* dest, char* src)//指针
{
//"bit"
while (*dest++ = *src++)
{
;//"\0"的ASCII码表的值为0 为假 跳出循环
}
*dest = *src;//'\0'
}
最优版本
//最佳优化版
//const 得到正确的结果 保护作用
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* src)//strcpy函数返回的是目标字符串 起始地址
{
char* ret = dest;//保存
assert(dest != NULL);
assert(src != NULL);
//把src指向的字符串拷贝到dest指向的空间,包含'\0'
while (*dest++ = *src++)
{
;
}
return ret;//返回起始地址
}
int main()
{
char arr1[] = "#################";
char arr2[] = "bit";
//返回值作为另外一个函数的参数 链式访问
printf("%s\n",my_strcpy(arr1,arr2));
return 0;
}