用c语言编程实现strcpy,用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove

1.模拟实现strcpy

#include

#include

#include

#include

char *my_strcpy(char *dst, const char *src)

{

assert(dst != NULL);

assert(src != NULL);

char *ret = dst;

while ((*dst++ = *src++) != ‘\0‘)

;

return ret;

}

int main()

{

char arr1[] = "hello world!!!";

char arr2[20];

my_strcpy(arr2, arr1);

printf("%s\n", arr2);

system("pause");

return 0;

}

2.模拟实现strcat

#include

#include

#include

char *strcat(char  *dest, char const *src)

{

assert(dest);

assert(src);

char *temp = dest;

while (*dest)

{

dest++;

}

while (*src)

{

*dest++ = *src++;

}

*dest = ‘\0‘;

return temp;

}

int main()

{

char arr[50] = "i come from china!!";

char *p = " me too!!";

strcat(arr, p);

printf("%s", arr);

system("pause");

return 0;

}

3.模拟实现strcat

#include

#include

#include

int my_strcmp(const char *arr1, const char *arr2)

{

assert(arr1);

assert(arr2);

while (*arr1 == *arr2)

{

if (*arr1 == ‘\0‘)

{

return 1;

}

arr1++;

arr2++;

}

return *arr1 - *arr2;

}

int main()

{

char *s1 = "i am a student!";

char *s2 = "i am a student!";

int ret=my_strcmp(s1, s2);

if (ret == 1)

{

printf("两个字符串相同!\n");

}

else{

printf("两个字符串差值为:%d\n", ret);

}

system("pause");

return 0;

}

4.模拟实现memcpy

#include

#include

#include

#include

void *my_memcpy(void *dest, const void *src, size_t n)

{

assert(dest);

assert(src);

char *p = (char *)dest;

const char *q = (char *)src;

while (n--)

{

*p = *q;

p++;

q++;

}

return dest;

}

int main()

{

int arr1[100] = { 1,2,3,4,5,6,7,8,9,10,11 };

int arr2[100] = { 0 };

int i = 0;

int num;

printf("请输入要拷贝的个数:");

scanf("%d", &num);

my_memcpy(arr2, arr1, 4*num);

for (i = 0; i 

{

printf("%d ", arr2[i]);

}

printf("\n");

system("pause");

return 0;

}

5.模拟实现memmove

#include

#include

#include

#include

void *my_memcpy(void *dest, const void *src, size_t n)

{

assert(dest);

assert(src);

char *p = (char *)dest;

const char *q = (char *)src;

if (p > q && p 

{

while (n--)

{

*(p + n) = *(q + n);

}

}

else

{

while (n--)

{

*p = *q;

p++;

q++;

}

}

return dest;

}

int main( )

{

int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

int i = 0;

my_memcpy(arr+4, arr+2, 20);

for (i = 0; i 

{

printf("%d ", arr[i]);

}

printf("\n");

system("pause");

return 0;

}

时间: 11-18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值