字符串中的函数原型
strlen
#include<stdio.h>
#include<assert.h>
size_t mystrlen(char *dest){
assert(dest!=NULL);
size_t len;
for(len=0;*(dest+len)!='\0';len++);
return len;
}
strcpy
#include<stdio.h>
#include<assert.h>
char *mystrcpy(char *dest,const char *src){
assert(dest!=NULL && src!=NULL);
size_t i;
for(i=0;*(src+i)!='\0';i++){
*(dest+i)=*(src+i);
}
*(dest+i)='\0';
return dest;
}
strncpy
#include<stdio.h>
#include<assert.h>
char *mystrncpy(char *dest,const char *src,size_t n){
size_t i;
for(i=0;i<n;i++){
*(dest+i)=*(src+i);
if(*(dest+i)=='\0'){
break;
}
}
return dest;
}
strcat
#include<stdio.h>
#include<assert.h>
char *mystrcat(char *dest,const char *src){
assert(dest!=NULL && src!=NULL);
size_t len;
for(len=0;*(dest+len)!='\0';len++);
size_t i;
for(i=0;*(src+i)!='\0';i++){
*(dest+len+i)=*(src+i);
}
*(dest+len+i)='\0';
return dest;
}
strncat
#include<stdio.h>
#include<assert.h>
char *mystrncat(char *dest,const char *src,size_t n){
assert(dest!=NULL && src!=NULL);
size_t len;
for(len=0;*(dest+len)!='\0';len++);
size_t i;
for(i=0;i<n;i++){
*(dest+len+i)=*(src+i);
if(*(src+i)=='\0'){
break;
}
}
*(dest+len+i)='\0';
return dest;
}
strcmp
#include<stdio.h>
#include<assert.h>
int mystrcmp(const char *s1,const char *s2){
assert(s1!=NULL && s2!=NULL);
while(*s1!='\0' && *s2!='\0' && *s1==*s2){
s1++;
s2++;
}
return *s1-*s2;
}
strncmp
#include<stdio.h>
#include<assert.h>
int mystrncmp(const char *s1,const char *s2,size_t n){
assert(s1!=NULL && s2!=NULL);
while(*s1!='\0' && *s2!='\0' && *s1==*s2 && n>1){
s1++;
s2++;
n--;
}
return *s1-*s2;
}
memcpy
#include<stdio.h>
#include<assert.h>
void *mymemcpy(void *deat,const void *src,size_t n){
assert(dest!=NULL && src!=NULL);
char *pdest=dest;
cahr *src=src;
while(n>0){
*pdest++=*pdest++;
n--;
}
return dest;
}