c语言的str函数怎么用
这篇文章主要讲解了“c语言的str函数怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c语言的str函数怎么用”吧!
strlen:
用于求字符串长度,从首字符开始,到'\0'结束,'\0'不计入总长度。
函数实现:
size_t my_strlen(const char* ptr){assert(ptr);const char* ptx = ptr;while (*(++ptx));return (size_t)(ptx - ptr);}
strcmp:
用于比较两个字符串大小,注意大小并不是指字符串长度,而是从第一个字符开始比较,比较字符的大小。该函数返回的是一个int值,不同编译器,返回的值是不一样。但是正负是一致的,当第一个大于第二个,返回正值,小于则返回负值,相等返回0。
函数实现:
int my_strcmp(const char* str1,const char* str2){assert(str1 && str2);while((!(*str1 - *str2)) && ((*(str1++)) * (*(str2++))));return (int)(*str1 - *str2);}
strcpy:
用于复制字符串。
函数实现:
char* my_strcpy(char* dest,const char* source){assert(dest && source);char* result = dest;while (*(dest++) = *(source++));return result;}
strcat:
用于在目标字符串末尾追加一个字符串。
函数实现:
char* my_strcat(char* a, const char* b){assert(a && b);char* tmp = a;while (*(++a));while (*(a++) = *(b++));*a = '\0';return tmp;}
strstr:
用于在一个字符串内寻找另一个字符串。这于KMP算法有关。
函数实现:
const char* my_strstr(const char* a, const char* b)//a为长字符串 b为短字符串{char* cp = (char*)a;char* s1;char* s2;if (!*b)return a;while (*cp){s1 = cp;s2 = (char*)b;while (*s1 && *s2 && !(*s1 - *s2)){s1++;s2++;}if (!*s2)return cp;cp++;}return NULL;}
atoi:
这个函数很有意思,它会把字符串的数字串转化为int值。
函数实现:
int my_atoi(const char* str){assert(str);int num = 0;int result = 0;const char* tmp = str;while (*str && *str != '.'){num++;str++;}while (num--){result += (*tmp - '0') * (int)pow(10, num);tmp++;}return result;}
strncpy
,strncmp
,strncat
:
三个函数都是限制了字符个数,功能是一样的。
函数实现:
char* my_strncpy(char* dest, const char* sou, size_t num){assert(dest && sou);char* tmp = dest;while ((num--) && (*(dest++) = *(sou++)));return tmp;}char* my_strncat(char* a, const char* b, int n) {assert(a && b);char* tmp = a;while (*(++a));while ((n--) && (*(a++) = *(b++)));*a = '\0';return tmp;}int my_strncmp(const char* str1, const char* str2,int n){assert(str1 && str2);while ((!(*str1 - *str2)) && ((*(str1++)) * (*(str2++))) && (n--));return (int)(*str1 - *str2);}
感谢各位的阅读,以上就是“c语言的str函数怎么用”的内容了,经过本文的学习后,相信大家对c语言的str函数怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341