1.实现strcpy
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char* My_strcpy(char *n_a, const char *n_b)
{
char *p = n_a;
assert(n_a);
assert(n_b);
while(*n_a = *n_b)
{
n_a++;
n_b++;
}
return p;
}
int main()
{
char *a = "AWEDFGTYGH";
char b[] = "0";
char *p = My_strcpy(b, a);
printf("%s", p);
system("pause");
return 0;
}
2.实现strcat函数
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char* My_strcat(char n_a[], char *n_b)
{
int i = 0;
char *ret = n_a;
assert(n_a);
assert(n_b);
while(n_a[i] != '\0')
{
i++;
}
while(n_a[i] = *n_b)
{
i++;
n_b++;
}
return ret;
}
int main()
{
char a[] = "AWEDFGTYGH";
char b[] = "ASDDDDFG";
char *p = My_strcat(a, b);
printf("%s", p);
system("pause");
return 0;
}
3.实现strstr函数
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char* My_strstr(char *a, const char *b)
{
char *p = a;
const char *q = b;
assert(a);
assert(b);
if(*b == '\0')
return NULL;
while(*a)
{
p = a;
q = b;
while(*p == *q)
{
p++;
q++;
}
if(*q == '\0')
{
return a;
}
a++;
}
return NULL;
}
int main()
{
char *a = "SFGGGJHIK";
char *b = "GJH";
char *p = My_strstr(a, b);
if(p == NULL)
{
printf("找不到");
}
else
{
printf("%s", p);
}
system("pause");
return 0;
}
4.实现strchr函数
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char* My_strchr(char* p, char b)
{
assert(p);
while(*p)
{
if(*p == b)
{
return p;
}
p++;
}
return NULL;
}
int main()
{
char *p = "ASERFGHJ";
char c = 'G';
char* s = My_strchr(p, c);
if(p != NULL)
printf("%s", s);
else
printf("找不到");
system("pause");
return 0;
}
5.实现strcmp函数
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
int My_strcmp(const char *p,const char *q)
{
assert(p);
assert(q);
while(*p == *q)
{
if(*p == '\0')
return 0;
p++;
q++;
}
if(*p > *q)
return 1;
return -1;
}
int main()
{
char *a = "SEDFGHJ";
char *b = "SEDFGHJ";
int ret = My_strcmp(a, b);
printf("%d", ret);
system("pause");
return 0;
}
6.实现memcpy函数
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
void *My_memcpy(void *arr,const void *p, size_t count)
{
void *q = arr;
assert(arr);
assert(p);
while(count--)
{
*(char*)arr = *(char*)p;
arr = (char*)arr + 1;
p = (char*)p + 1;
}
return q;
}
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9,0};
int i = 0;
My_memcpy(a, a+5, 12);
for(i = 0; i < sizeof(a)/sizeof(a[0]); i++)
{
printf("%d", a[i]);
}
system("pause");
return 0;
}
7.实现memmove函数
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
void *My_memmove(void *arr,const void *p, size_t count)
{
void *q = arr;
assert(arr);
assert(p);
if(arr < p)
{
while(count--)
{
*(char*)arr = *(char*)p;
arr = (char*)arr + 1;
p = (char*)p + 1;
}
}
else
{
while(count--)
{
*((char*)arr+count) = *((char*)p+count);
}
}
return q;
}
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9,0};
int i = 0;
My_memmove(a, a+2, 20);
for(i = 0; i < sizeof(a)/sizeof(a[0]); i++)
{
printf(" %d", a[i]);
}
system("pause");
return 0;
}