strlen,strcpy,strcat,strstr,strcmp,strchr函数的使用和注意事项
来源:互联网 发布:帝国时代3mac三合一 编辑:程序博客网 时间:2024/06/05 01:51
strcpy源码:
char *strcpy(char *strDes, const char *strSrc) { assert((strDes != NULL) && (strSrc != NULL)); char *address = strDes; while ((*strDes ++ = *strSrc ++) != '\0') NULL; return address;
注意:strcpy只是复制字符串,但不限制复制的数量。很容易造成缓冲溢出,也就是说,不过dest有没有足够的空间来容纳src的字符串,它都会把src指向的字符串全部复制到从dest开始的内存
strcmp源码:
int strcmp(const char *s, const char *t) { assert(s != NULL && t != NULL); while (*s && *t && *s == *t) { ++ s; ++ t; } return (*s - *t); }
strcat源码:
char *strcat(char *strDes, const char *strSrc) { assert((strDes != NULL) && (strSrc != NULL)); char *address = strDes; while (*strDes != '\0') ++ strDes; while ((*strDes ++ = *strSrc ++) != '\0') NULL; return address; }
注意:1.不能向形参传递指向字符串常量的指针(本题中dst和src都是指向串常量的指针,字符串常量存储在常量区不能被修改
2.传递的字符数组前一个实参的所分配的内存空间必须足够大
int strlen(const char *str) { assert(str != NULL); int len = 0; while (*str ++ != '\0') ++ len; return len; }
strstr源码:
char *strstr(const char *strSrc, const char *str) { assert(strSrc != NULL && str != NULL); const char *s = strSrc; const char *t = str; for (; *t != '\0'; ++ strSrc) { for (s = strSrc, t = str; *t != '\0' && *s == *t; ++s, ++t) NULL; if (*t == '\0') return (char *) strSrc; } return NULL; }
strchr源码:
char * __cdecl strchr ( constchar * string, int ch ){ while (*string && *string != (char)ch) string++; if (*string == (char)ch) return((char *)string); return(NULL);}
结语:函数就向一个黑盒一样,调用它的人给他输入(调用它本身就是一种输入),然后等待一个理想中的输出或者是相应的操作。调用者是希望我们的这个函数能够非常健壮的让他们利用,那么为了使我们的函数拥有一定的鲁棒性。
0 0
- strlen,strcpy,strcat,strstr,strcmp,strchr函数的使用和注意事项
- strcpy(),strcat(),strlen(),strcmp(),strstr(),strchr()等函数的使用。
- c函数strcpy() ,strcat(),strcmp(), strlen(), strchr() ,strstr() 使用整理
- 模拟实现strlen/strcpy/strcat/strcmp/strstr/strchr/函数
- C++常见字符串操作函数的实现(strcpy/strcat/strcmp/strlen/strchr/strstr/strpbrk/strrev等)
- strlen strcmp strcpy strcat strchr strstr 实现(指针)
- strlen strcmp strcpy strcat strchr strstr 基础实现
- strlen strcmp strcat strcpy strncpy strstr strchar函数的实现
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- c语言:strcpy、strncpy、 Strcat、 Strcmp 、strchr、 strstr、 Strlen等函数功能
- c 字符串、字符和字节 strlen、strcpy、strcat、strcmp、strchr、strstr
- strcpy, strcmp, strcat, strstr, strlen的实现
- strlen,strcpy,strcat,strcmp,strstr
- strcpy/strcmp/strlen/strcat/strstr
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- strlen,strcpy,strcat,strcmp,strchr 的模拟实现
- C语言字符串函数详解 strcpy、strcmp、strcat、strlen、strstr
- layer和layui的用法
- 用matlab计算M,N,R,r。
- 【设计模式】 代理模式(Proxy Pattern)- 最易懂的设计模式解析
- 310. Minimum Height Trees
- maven多模块项目SpringMVC简单实例
- strlen,strcpy,strcat,strstr,strcmp,strchr函数的使用和注意事项
- 【设计模式】 建造者模式(Builder Pattern)- 最易懂的设计模式解析
- hadoop的dw-hive安装配置---hadoop安装系列之三
- 页面跳转与重定向总结
- LeetCode 104. Maximum Depth of Binary Tree
- 【设计模式】 外观模式(Facade Pattern)
- C#WebApi通过Get方法存Json到数据库
- N
- LeetCode 141. Linked List Cycle