3.目标空间必须足够大,以确保能存放源字符串。
因为超过的话会越界导致栈溢出
4. 目标空间必须可变。
为什么会出现非法访问?
因为"hello"是个常量字符串,我们不能对他赋值和修改
5.学会模拟实现
strcat
1.源字符串必须以 '\0' 结束。(类似,就不描述了)
2.目标空间必须有足够的大,能容纳下源字符串的内容。(类似,就不描述了)
3.目标空间必须可修改。(类似,就不描述了)
4.字符串自己给自己追加,如何?
我们试一下
但是为什么vs2019的库里可以,因为每个编译器封装的函数不一样,底层实现不一样
5.学会模拟实现
strcmp
切记,字符串比较的话不是比较长度而是比较两两字符的大小,有一个大或小于或者等于就返回
学会模拟实现
strncpy
1.拷贝num个字符从源字符串到目标空间。
2. 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
想一想strncpy与strncp有什么优缺点?
strncpy相较于strcpy,在拷贝字符的时候更加精确,且不容易出错
但是他在一些特定场合时的执行效率比较低,因为封装的函数的代码更加复杂
导致效率会降低;
strncat
思考一下strncat与strcat有什么区别
1.
2.strncat相较于strcat追加的字符可以控制,也就说更加精确,但是执 行 效率相较于strcat低了。
3.学会模拟实现
strncmp
1.思考一下strncmp与strcmp有什么区别
strncmp相较于strcmp,在拷贝字符的时候更加精确,且不容易出错但是他在一些特定场合时的执行效率比较低,因为封装的函数的代码更加复杂
2.学会模拟实现
3.利用字符串比较可以查找对应字符
strstr
1.字符串查找
2.学会模拟实现
strtok
char * strtok ( char * str, const char * sep );