1、模拟实现strcpy函数
#include<stdio.h>
#include<assert.h>
char *my_strcpy(char *aims, const char *source)
{
assert(aims);
assert(source);
char *ret = aims;
while(*aims++=*source++){
;
}
return ret;
}
int main()
{
char str1[] = "I love study!";
char str2[15];
printf("str2--> %s\n", my_strcpy(str2, str1));
return 0;
}
2、模拟实现strcat函数
#include<stdio.h>
#include<assert.h>
char * my_strcat(char *dest, const char *src)
{
assert(src && dest);
char *ret = dest;
while (*dest != '\0')
{
dest++;
}
while (*dest++ = *src++)
{
;
}
return ret;
}
int main()
{
char arr[50] = { 0 };
char str1[] = "welcome ";
char str2[] = "to ";
char str3[] = "word!";
my_strcat(arr, str1);
my_strcat(arr, str2);
my_strcat(arr, str3);
printf("%s\n", arr);
system("pause");
return 0;
}
3、模拟实现strlen函数
#include<stdio.h>
#include<string.h>
#include<assert.h>
int my_strlen(const char *p)
{
int count=0;
assert(p!=NULL);
while(*p!='\0')
{
count++;
p++;
}
return count;
}
int main()
{
char arr[]="123456";
printf("%u\n",(unsigned)my_strlen(arr));
return 0;
}
4、.模拟实现strstr
strstr函数是为了判断你需要查找的字符串在原来的字符串中有没有,如果有,输出这个字符串的起始位置,没有,则输出空,函数原型:char * strstr ( const char * str1, const char * str2 );
#include<stdio.h>
#include<assert.h>
char *my_strstr(const char *str1, const char *str2)
{
char *cp = str1;
char *des = str1;
char *src = str2;
assert(str1 && str2);
while (*cp)
{
des = cp;
src = str2;
while (*des && *src && (*des == *src))
{
des++;
src++;
}
if (*src == '\0')
return cp;
cp++;
}
}
int main()
{
char arr1[] = "I am a student!";
char arr2[] = "a student";
printf("%s\n",my_strstr(arr1,arr2));
system("pause");
return 0;
}
5、模拟实现strchr
strchr函数是为了找出在字符串str中第一次出项字符ch的位置,找到就返回该字符位置的指针(也就是返回该字符在字符串中的地址的位置),找不到就返回空指针,函数原型为:char * strchr ( const char * str, int character )
char *my_strchr(const char *str, int c)
{
assert(str);
while (*str && (*str != (char)c))
++str;
if ((char)c == *str)
return (char *)str;
else
return NULL;
}
int main()
{
char *src= "welcome to the university";
printf("%s\n", my_strchr(src, 'o'));
system("pause");
return 0;
}
6、模拟实现strcmp
int my_strcmp(const char *p1, const char *p2)
{
assert(p1&&p2);
while (*p1 && *p2){
if (*p1 > *p2)
return 1;
else if (*p1 < *p2)
return -1;
p1++, p2++;
}
if ((*p1 == '\0') && (*p2 == '\0'))
return 0;
}
int main()
{
char arr1[] = "abcd1234";
char arr2[] = "abcd1234";
printf("%d\n", my_strcmp(arr1, arr2));
system("pause");
return 0;
}