以下是各种实现字符串的各种操作函数的手写。仅供参考!如有不足,欢迎补充
#include <stdio.h>
//#include <string.h>
char *my_strcpy(char *dest, const char *src)
{
int i=0;
while(1)
{
*(dest+i) = *(src+i);
if(*(src+i) == '\0')
break;
i++;
}
return dest;
}
char *my_strncpy(char *dest, const char *src, long n)
{
int i=0;
while(n--)
{
*(dest+i) = *(src+i);
if(*(src+i) == '\0')
break;
i++;
}
return dest;
}
long my_strlen(const char *s)
{
long len=0;
while(*(s+len) != '\0')
len++;
return len;
}
char *my_strcat(char *dest, const char *src)
{
long len=0;//字符串的长度就是这个字符串'\0'的下标
while(*(dest+len) != '\0')
len++;
int i=0;
while(1)
{
*(dest+len+i) = *(src+i);
if(*(src+i) == '\0')
break;
i++;
}
return dest;
}
char *my_strncat(char *dest, const char *src, long n)
{
long len=0;//字符串的长度就是这个字符串'\0'的下标
while(*(dest+len) != '\0')
len++;
int i=0;
while(n--)
{
*(dest+len+i) = *(src+i);
if(*(src+i) == '\0')
return dest;
i++;
}
*(dest+len+i) = '\0';
return dest;
}
int my_strcmp(const char *s1, const char *s2)
{
int i=0;
while(1)
{
if(*(s1+i) < *(s2+i))
return -1;
else if(*(s1+i) > *(s2+i))
return 1;
else if(*(s1+i) == '\0')
return 0;
i++;
}
}
int my_strncmp(const char *s1, const char *s2, long n)
{
int i=0;
while(n--)
{
if(*(s1+i) < *(s2+i))
return -1;
else if(*(s1+i) > *(s2+i))
return 1;
else if(*(s1+i) == '\0')
return 0;
i++;
}
return 0;
}