#include <stdio.h>
#include <assert.h>
int strcmp(const char *dset, const char * source)
{
assert((dset != NULL) && (source != NULL)); //出错处理
int ret = 0;
while(((ret = (*dset++ - *source++)) == 0) && (*dset != '\0'));//比较
if(ret < 0){ //((ret > 0 )? 1 : ((ret < 0) ? - 1 : 0)));
return -1;
} else if(ret > 0){
return 1;
} else {
return 0;
}
}
int my_strlen(const char *p)
{
int i = 0;
while(*p){
p++;
i++;
}
return i;
}
char* my_strcat(char *desc, const char * str)
{
if((desc == NULL)||(str == NULL)){
if(desc == NULL)
puts("desc my_strcat the illegal parameter!!!");
else
puts("str my_strcat the illegal parameter!!!");
return NULL;
}
while(*desc)
desc++;
while(*desc++ = *str++);
return desc;
}
char* my_strcpy(char *desc, const char *str)
{
if((desc == NULL)||(str == NULL)){
if(desc == NULL)
puts("desc my_strcpy the illegal parameter!!!");
else
puts("str my_strcpy the illegal parameter!!!");
return NULL;
}
char * tmp = desc;
while(*desc++ = *str++);
return tmp;
}
void * my_memcpy(void *desc,const void *str,size_t sizet)
{
if((desc == NULL)||(str == NULL)){
if(desc == NULL)
puts("desc my_strcpy the illegal parameter!!!");
else
puts("str my_strcpy the illegal parameter!!!");
return NULL;
}
char *tmp1 = (char *)desc;
char *tmp2 = (char *)str;
int i = 0;
for(i = 0; i < sizet; i++){
*tmp1++ = *tmp2++;
}
return tmp1;
}
int main(void)
{
char str1[30] = "hello china";
char str2[10] = " I`m here";
printf("length of str is %d\n",my_strlen(str1)); //length of str is 11
my_strcat(str1,str2);
puts(str1); //hello china I`m here
my_strcpy(str1,str2);
puts(str1); //I`m here
my_memcpy(str1,str2,sizeof str2);
puts(str1); //I`m here
return 0;
}
C 语言 字符串处理函数的实现
最新推荐文章于 2022-06-13 21:05:35 发布