函数 strcpy 的原型是 char* strcpy(char* des , const char* src),des 和 src 所指内存区域不可以重叠且 des 必须有足够的空间来容纳 src 的字符串。
#include
#include
char* strcpy(char* des, const char* src)
{
assert((des!=NULL) && (src!=NULL));
char *address = des;
while((*des++ = *src++) != '\0')
;
return address;
}
要知道 strcpy 会拷贝'\0',还有要注意:
-
源指针所指的字符串内容是不能修改的,因此应该声明为 const 类型。
-
要判断源指针和目的指针为空的情况,思维要严谨,这里使用 assert(见文末)。
-
要用一个临时变量保存目的串的首地址,最后返回这个首地址。
-
函数返回 char* 的目的是为了支持链式表达式,即 strcpy 可以作为其他函数的实参。
函数 strlen 的原型是 size_t strlen(const char *s),其中 size_t 就是 unsigned int。
#include
#include
int strlen(const char* str)
{
assert(str != NULL);
int len = 0;
while((*str++) != '\0')
++len;
return len;
}
strlen 与 sizeof 的区别:
-
sizeof 是运算符,strlen 是库函数。
-
sizeof 可以用类型、变量做参数,而 strlen 只能用 char* 变量做参数,且必须以 '\0' 结尾。
-
sizeof 是在编译的时候计算类型或变量所占内存的大小,而 strlen 的结果要在运行的时候才能计算出来,用来计算字符串的长度。
-
数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。
函数 strcat 的原型是 char* strcat(char* des, char* src),des 和 src 所指内存区域不可以重叠且 des 必须有足够的空间来容纳 src 的字符串。
#include
#include
char* strcat(char* des, const char* src) // const表明为输入参数
{
assert((des!=NULL) && (src!=NULL));
char* address = des;
while(*des != '\0') // 移动到字符串末尾
++des;
while(*des++ = *src++)
;
return address;
}
四、字符串比较strcmp
函数 strcmp 的原型是 int strcmp(const char *s1,const char *s2)。
- 若s1==s2,返回零;
- 若s1>s2,返回正数;
- 若s1
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?