!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(中)

简介: !!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(上)

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 );

相关文章
|
存储 安全
!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(下)
!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(上)
|
编译器 C语言
C语言进阶教程(再论指针和数组(2))
C语言进阶教程(再论指针和数组(2))
73 2
!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(上)
!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)
|
人工智能 编译器 测试技术
一次性搞清数组指针、指针数组---从多维数组的本质上刨析(让你顿悟版)
一次性搞清数组指针、指针数组---从多维数组的本质上刨析(让你顿悟版)
55 0
|
存储 编译器
函数栈帧深度剖析(一篇带你牢牢掌握函数栈帧)(二)
函数栈帧深度剖析(一篇带你牢牢掌握函数栈帧)(二)
140 0
|
存储 机器学习/深度学习 编译器
函数栈帧深度剖析(一篇带你牢牢掌握函数栈帧)(一)
函数栈帧深度剖析(一篇带你牢牢掌握函数栈帧)(一)
898 0
|
存储 编译器 程序员
|
存储 监控 编译器
【C语言进阶】函数栈帧的创建和销毁(内功修炼)
目录 前言 一、基础知识 1.1 什么是栈区? 1.2 寄存器 1.3 测试代码和一些其它的 二、函数栈帧的创建和销毁的过程 2.1 _tmainCRTStartup函数(调用main函数)栈帧的创建 2.2 main函数栈帧的创建 2.3 main函数内执行有效代码 2.4 Add函数栈帧的创建 2.5 Add函数内执行有效代码 2.6 Add函数栈帧的销毁 2.7 main函数代码继续执行 三、所需反汇编代码总览 四、总结
345 0
【C语言进阶】函数栈帧的创建和销毁(内功修炼)
|
存储 编译器 C语言
【多级指针】带你从反汇编角度认识指针,C语言指针,多级指针【滴水逆向三期(36)笔记】(上)
【多级指针】带你从反汇编角度认识指针,C语言指针,多级指针【滴水逆向三期(36)笔记】
|
存储 编译器 C语言
【多级指针】带你从反汇编角度认识指针,C语言指针,多级指针【滴水逆向三期(36)笔记】(下)
【多级指针】带你从反汇编角度认识指针,C语言指针,多级指针【滴水逆向三期(36)笔记】(下)