#include<stdio.h>
#define TEST
int _strlen(const char *str)
{
int len=0;
while(*str++)len++;
return len;
}
int dec_strlen(const char *str)
{
if(!*str)return 0;
else return 1+dec_strlen(str+1);
}
void _strcpy(char *dest,const char *src)
{
while(*dest++ = *src++);
}
void _strncpy(char *dest,const char *src,int size)
{
if(size<=0){
printf("ERROR\n");
return;
}
const char *start=src;
while(*src++ && size--);
src--;
for(;start<src;*dest=*start,start++,dest++);
*dest='\0';
}
int _strcmp(const char *str1,const char *str2)
{
while(*str1++ && *str2++)
{
if(*str1<*str2)return -1;
if(*str1>*str2)return 1;
}
return 0;
}
int _strncmp(const char *str1,const char *str2,int size)
{
if(size<=0){
printf("ERROR\n");
return 0;
}
for(;size--;str1++,str2++)
{
if(*str1<*str2)return -1;
if(*str1>*str2)return 1;
}
return 0;
}
void _strcat(char *dest,const char *src)
{
while(*++dest);
while(*dest++ = *src++);
}
void _strncat(char *dest,const char *src,int size)
{
if(size<=0){
printf("ERROR\n");
return;
}
const char *start=src;
while(*++dest);
while(*src++ && size--);
src--;
for(;start<src;*dest=*start,start++,dest++);
*dest='\0';
}
char *_strchr(char *str,const char dest)
{
for(;*str;str++) if(*str==dest)return str;
printf("NULL\n");
return NULL;
}
char *_strrchr(char *str,const char dest)
{
char *start=str;
while(*++str);
for(;str!=start;str--) if(*str==dest)return str;
printf("NULL\n");
return NULL;
}
char *_strstr(char *dest,const char *src)
{
}
char *_strrstr(char *dest,const char *src)
{
}
void _strlwr(char *str)
{
for(;*str;str++) (*str>='A' && *str<='Z')?(*str=*str-'A'+'a'):(*str=*str);
}
void _strupr(char *str)
{
for(;*str;str++) (*str>='a' && *str<='z')?(*str=*str-'a'+'A'):(*str=*str);
}
int main()
{
#ifdef TEST
printf("strlen:\n");
char s[30]="abcde";
printf("%d\n",_strlen(s));
printf("strcpy:\n");
char s1[30]="fghijklmn";
_strncpy(s,s1,5);
printf("%s\n\n",s);
printf("strcmp:\n");
printf("%d\n\n",_strncmp("abcde","abcdefg",5));
printf("strcat:\n");
char s2[30]="abcde";
_strncat(s2,"fghijk",3);
printf("%s\n\n",s2);
printf("strchr:\n");
printf("%s\n",_strchr("abcdedcba",'f'));
printf("%s\n\n",_strrchr("abcdedcba",'c'));
#else
printf("strlwr(upr):\n");
char s3[30]="aBcD123efgH";
char s4[30]="aBcD123efgH";
printf("%s\n",s3);
_strlwr(s3);
_strupr(s4);
printf("%s\n",s3);
printf("%s\n\n",s4);
#endif
return 0;
}