实现C语言常用字符串库函数
程序员文章站
2022-03-25 23:30:08
目录strlenstrcpystrcatstrcmp总结strlen数组长度的计算是通过strlen来的,它的作用就是判断给定的数组元素个数,直到碰到\0结束函数原型size_t strlen ( c...
strlen
数组长度的计算是通过strlen来的,它的作用就是判断给定的数组元素个数,直到碰到\0结束
函数原型
size_t strlen ( const char * str );
废话少说,直接上代码
int my_strlen(char *str) { char* ch=str; int count=0; while(*ch!='\0') { count++; ch++; } return count; }
但考虑到安全性,因为求长度并不会改变源字符串,所以加上const修饰char,保证该字符串的内容不能被修改,但是可以改变指向
int my_strlen(const char *str) { char* ch=str; int count=0; while(*ch!='\0') { count++; ch++; } return count; }
strcpy
strcpy是将一个字符串含\0整体拷贝到另一个字符串中
原型为
char * strcpy ( char * destination, const char * source );
void my_strcpy(char* dest,const char *src) { char * ch=src; while(*ch!='\0') { *dest=*ch; dest++; ch++; } *dest='\0'; }
同理不改变原字符串,所以加上const修饰。在最后记得手动给目的字符串加上\0,这样才能保证输出正确
strcat
原型
char * strcat ( char * destination, const char * source );
void my_strcat(char* dest,const char *src) { char * ch=dest; while(*ch!='\0')ch++; while(*src!='\0') { *ch=*src; ch++; src++; } *ch='\0'; }
先遍历跑完目的字符串,接着再将原字符串所指的值一一赋给目的字符串.而因为是把原接在目的字符串后,所以目的字符串要足够大
strcmp
原型
int strcmp ( const char * str1, const char * str2 );
int my_strcmp(const char* str1,const char *str2) { assert(str1); assert(str2); char * s1=str1; char * s2=str2; while(*s1==*s2) { if(*s1=='\0') { return 0; } s1++; s2++; } if(*s1>*s2) { return 1; } else { return -1; } }
上面代码最后可以简化为return *s1-*s2,不过主函数里要相应更改了
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!