#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
#include <windows.h>
#include <stdlib.h>
#模擬實現memmove函數
void *my_memmove(void *dest,const void *src,size_t count)
{
void *ret = dest;
assert(dest);
assert(src);
if((src<dest)&&((char*)dest<(char*)src+count))
{
while(count--)
{
*((char*)dest+count)=*((char*)src+count);
}
}
else
{
while(count--)
{
*(char*)dest=*(char*)src;
dest=(char*)dest+1;
src=(char*)src+1;
}
}
return ret;
}
int main()
{
int i=0;
int arr[]={1,2,3,4,5,6,7,8,9,0};
int sz=sizeof(arr)/sizeof(arr[0]);
my_memmove(arr+3,arr,4*sizeof(int));
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
#模擬實現memcpy函數
void* my_memcpy(void* dest, const void* src,size_t count)
{
void *ret = dest;
assert(dest);
assert(src);
while(count)
{
*(char *)dest = *(char *)src;
dest = (char *)dest+1;
src = (char *)src+1;
count--;
}
return ret;
}
int main()
{
char arr[] = {"hello"};
char str[] = {"bit"};
int sz = sizeof(arr)/sizeof(arr[0]);
int i=0;
char *ret=my_memcpy(arr,str,7);
printf("%s\n",ret);
return 0;
}
#模擬實現strstr函數
char *my_strstr(const char *str, char *string)
{
int i=0;
assert(str&&string);
while('\0'!=str)
{
while(1)
{
if(string[i]!=str[i])
break;
if(string[i]=='\0')
return str;
i++;
}
string++;
}
return NULL;
}
int main()
{
char string[] = "bcde";
char str[] = "abcdef";
char *p=my_strstr(str,string);
int result=p-str+1;
if(p!=NULL)
printf("%s found at position %d\n\n", string,result);
else
printf( "%s not found\n", string);
return 0;
}
#模擬實現strcmp函數
int my_strcmp(const char *str1, const char *str2)
{
assert(str1);
assert(str2);
while (*(str1) == *(str2))
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
return *str1 - *str2;
}
int main()
{
char *p1 = "ab";
char *p2 = "abcd";
printf("%d\n", my_strcmp(p1, p2));
return 0;
}
模擬實現strcmp、strstr、memcpy、memmove
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.