#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main01()
{
char src[] = "abdcjfsomfgld";
char dst[100];
int i = 0;
for (i = 0; src[i] != '\0'; i++)
{
dst[i] = src[i];
}
//补结束符\0,或者在初始化的时候,将数组初始化为:char dst[100]={0};
dst[i] = '\0';//等价于dst[i] = 0;
printf("%s\n", dst);
printf("\n");
return 0;
}
void my_strcpy(char* dst, char* src)
{
操作数组下标的方式
int i = 0;
for (i = 0; src[i] != '\0'; i++)//等价于*(src+i)!='\0'
{
dst[i] = src[i];//等价于:*(dst+i)=*(src+i);
}
//补结束符\0,或者在初始化的时候,将数组初始化为:char dst[100]={0};
dst[i] = '\0';//等价于*(dst+i) = 0;
}
void my_strcpy2(char* dst, char* src)
{
//操作指针的方式
while (*src != 0)
{
*dst = *src;
dst++;
src++;
}
//补结束符
*dst = 0;
}
void my_strcpy3(char* dst, char* src)
{
//操作指针的方式
while (*src != 0)
{
*dst++ = *src++;//先用了,再加。等价于:*dst = *src;dst++;src++;
}
//补结束符
*dst = 0;
}
void my_strcpy4(char* dst, char* src)
{//一行代码形式
/*
*dst = *src;
dst++ , src++;
判断*dst是否为0,为0跳出循环
*/
while (*dst++ = *src++)
{
NULL;
}
}
//成功为0,失败为非0
//1、
//2、最好不要直接使用形参
int my_strcpy5(char* dst, char* src)
{
if (src == NULL || dst == NULL)
{
return -1;
}
//辅助变量把形参接过来
char* to = src;
char* from = dst;
while (*from++ = *to++)
{
NULL;
}
printf("my_strcpy5:dst%s\n", dst);
return 0;
}
int main()
{
char src[] = "abdcjfsomfgld";
char dst[100];
my_strcpy(dst, src);
printf("%s\n", dst);
my_strcpy2(dst, src);
printf("%s\n", dst);
my_strcpy3(dst, src);
printf("%s\n", dst);
int i = 0;
int n = i++;
printf("n=%d,i=%d\n", n, i);//0,1
int j = 0;
int m = ++j;
printf("m=%d,j=%d\n", m, j);//1,1
//一行代码方式
my_strcpy4(dst, src);
printf("%s\n", dst);
//完善后的字符串拷贝函数
int ret=0;
ret = my_strcpy5(dst, src);
if (ret != 0)
{
printf("my_strcpy5 error: %d\n", ret);
}
printf("%s\n", dst);
printf("\n");
return 0;
}
C语言 字符串拷贝函数的实现
最新推荐文章于 2024-09-06 00:06:01 发布