#include
char * strcpy ( char *strDest, const char *strSrc) {
char *address=strDest;
assert ((strDest!=NULL) && (strSrc!=NULL));
while (*strSrc!= '\0' ) {
*strDest++=*strSrc++;
}
*strDest= '\0' ;
return address;
}
char * strcat ( char *strDest, const char *strSrc) {
char *address=strDest;
assert ((strDest!=NULL) && (strSrc!=NULL));
while (*strDest!= '\0' ) {
strDest++;
}
while (*strSrc!= '\0' ) {
*strDest++ =* strSrc++;
}
*strDest= '\0' ;
return address;
}
nt strcmp ( const char *str1, const char *str2) {
assert ((*str1!= '\0' && *str2!= '\0' ));
while (*str1 && *str2 && *str1==*str2) {
str1++;
str2++;
}
return *str1-*str2;
}
int new_strlen( const char *str) {
assert (str != NULL);
int len = 0;
while (*str++ != '\0' ) {
++len;
}
return len;
}
void * memcpy ( void *dst, void *src, size_t n) {
char *dp = ( char *)dst;
char *sp = ( char *)src;
assert ((src!=0) && (dst!=0) && n>0);
while (n--) {
*(dp++) = *(sp++);
}
*dp= '\0' ;
return dst;
}
void *new_memmove( void *dst, const void *src, int n) {
char *dp = ( char *)dst;
char *sp = ( char *)src;
assert ((src != 0)&&(dst != 0) && (n > 0));
if (sp > dp || (sp+n) < dp) {
while (n--)
*(dp++)=*(sp++);
*dp= '\0' ;
} else if (sp < dp){
sp += n;
dp += n;
*dp = '\0' ;
while (n--)
*(--dp) = *(--sp);
}
return dst;
}
int main() {
char dest[10];
char * src = "test!" ;
char * ret = strcpy (dest, src);
printf ( "Test strcpy ret is :%s\n" , ret);
char cat1str[20] = "cat1" ;
char * cat2str = "cat2" ;
printf ( "Test strcat ret is :%s\n" , strcat (cat1str, cat2str));
char *len = "len" ;
printf ( "Test strlen ret is :%d\n" , new_strlen(len));
char mem_dest[20];
char * mem_src = "the src test memcpy" ;
printf ( "Test memcpy ret is :%s\n" , memcpy (mem_dest, mem_src, 10));
char mv_dest[20];
char * mv_src = "the src test memmove" ;
printf ( "Test memmove ret is :%s\n" , new_memmove(mv_dest, mv_src, 10));
}
|