1.实现strcpy
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *Mystrcpy(char*dest, const char *src)
{
char*p = dest;
assert(dest != NULL && src != NULL);
while (*dest++ = *src++);
return p;
}
int main()
{
char dest[20] = {0};
char*src = "hello";
Mystrcpy(dest, src);
printf("%s\n", dest);
system("pause");
return 0;
}
2.实现strcat
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
char *Mystrcat(char *dest, const char *src)
{
char *p = dest;
assert(dest != NULL && src != NULL);
while (*dest != '\0')
{
dest++;
}
while (*dest++ = *src++);
return p;
}
int main()
{
char dest[30] = "hello ";
char *src = "tianjia";
Mystrcat(dest, src);
printf("%s\n", dest);
system("pause");
return 0;
}
3.实现strstr
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
const char *Mystrstr(const char *str1, const char *str2)
{
const char *s1 = str1;
const char *s2 = str2;
const char *start = s1;
assert(str1 != NULL && str2 != NULL);
while (*start != '\0')
{
s1 = start;
s2 = str2;
while (*s1 != '\0' && *s2!='\0' && *s1==*s2)
{
s1++;
s2++;
}
if (*s1 == '\0')
{
return NULL;
}
if (*s2 == '\0')
{
return start;
}
start++;
}
return NULL;
}
int main()
{
char *str1 = "abbbcdef";
char *str2 = "bbc";
const char *p= Mystrstr(str1, str2);
printf("%s\n", p);
system("pause");
return 0;
}
4.实现strchr
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char*MyStrchr(const char *str1, int c)
{
assert(str1 != NULL);
while (*str1 != '\0')
{
if (*str1 == c)
{
return str1;
}
str1++;
}
return NULL;
}
int main()
{
char str1[] = "abcd";
char* str = MyStrchr(str1, 'c');
printf("%s\n", str);
system("pause");
return 0;
}
5.实现strcmp
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int Mystrcmp(const char *str1, const char *str2)
{
assert(str1 != NULL && str2 != NULL);
while (*str1 == *str2)
{
if (*str1 == '\0')
{
return 0;
}
str1++;
str2++;
}
if (*str1 > *str2)
{
return 1;
}
else
{
return -1;
}
}
int main()
{
int c = 0;
char *str1 = "abcde";
char *str2 = "ab";
c = Mystrcmp(str1, str2);
printf("%d", c);
system("pause");
return 0;
}
6.实现memcpy
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void *MymemCpy(void *dest, const void *src, int count)
{
void *ret = dest;
char *str1 = (char*)dest;
char *str2 = (char *)src;
assert(dest != NULL&&src != NULL);
while (count--)
{
*str1++ = *str2++;
}
return ret;
}
int main()
{
int i = 0;
int arr1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
MymemCpy(arr1 + 2, arr1, 16);
for (i = 0; i < 9; i++)
{
printf("%d", arr1[i]);
}
printf("\n");
system("pause");
return 0;
}
7.实现memmove
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void *Mymemmove(void *dest, const void *src, int count)
{
void *ret = dest;
char *str1 = (char*)dest;
char *str2 = (char *)src;
assert(dest != NULL&&src != NULL);
if (dest < src)
{
while (count--)
{
*str1++ = *str2++;
}
}
else
{
while (count--)
{
*(str1+count) = *(str2+count);
}
}
return ret;
}
int main()
{
int i = 0;
int arr1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Mymemmove(arr1 + 2, arr1, 16);
for (i = 0; i < 9; i++)
{
printf("%d", arr1[i]);
}
printf("\n");
system("pause");
return 0;
}