您的位置:首页 > 编程语言 > C语言/C++

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

2015-11-19 13:16 579 查看
1.模拟实现strcpy
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
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<stdio.h>
#include<assert.h>
#include<stdlib.h>
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<stdio.h>
#include<assert.h>
#include<stdlib.h>
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<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
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 < num; i++)
{
printf("%d ", arr2[i]);
}
printf("\n");
system("pause");
return 0;
}
5.模拟实现memmove
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
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 < q + n)
{
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 < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  include system return