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

简介: !!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)
  • 求字符串长度
  • strlen
  • 长度不受限制的字符串函数
  • strcpy
  • strcat
  • trcmp
  • 长度受限制的字符串函数介绍
  • strncpy
  • strncat
  • strncmp
  • 字符串查找
  • strstr
  • strtok
  • 错误信息报告
  • strerror
  • 不幸的gets函数和升级版的fgets函数
  • puts函数和fputs函数
  • 缓冲区
  • 结束键盘,文件,流输入

首先我们先来学习一下strlen函数

  • strlen
  • 1.字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。
  • 2.参数指向的字符串必须要以 '\0' 结束。所以如果我们没有遇到\0,strlen会一直检索直到遇到\0
  • 上述我们看到计算的值为60,是因为我们strlen函数在计算arr数组时没有遇到\0,所以产生了随机值60,那么我们看下内存是否存放了\0
  • 3.注意函数的返回值为size_t,是无符号的( 易错
  • 我们看看上述答案是多少呢,是第一个选择还是第二个选择呢?

     答案是第二个选项

  • 4.学会strlen函数的模拟实现(下图是模拟实现思路)

strcpy

1.源字符串必须以 '\0' 结束。

想一想为什么出现这种现象(非法访问?)

答案是因为这个函数的实现就必须是用'\0'结束,这里arr2的空间里不  知  道'\0'在哪,所以在拷贝的时候会出现bug,具体我们看下面的模拟 实现内容就明白了。

2.会将源字符串中的 '\0' 拷贝到目标空间。

 我们看看是否strcpy函数会把'\0'拷贝到目标空间???

 

相关文章
|
6月前
|
编译器
!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(中)
!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(上)
|
6月前
|
存储 安全
!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(下)
!!!教你如何搞懂字符串函数(详细,后期会讲函数栈帧)(上)
|
9月前
|
存储 编译器 程序员
|
9月前
|
存储 算法 编译器
【c语言技能树】函数的创建与销毁 --函数栈帧
以下内容可能乍一看有点费解,但在我讲的过程中再看就很容易理解啦,
232 0
|
11月前
|
编译器 C语言
抽丝剥茧C语言(中阶)函数栈帧的创建与销毁——图解(上)
抽丝剥茧C语言(中阶)函数栈帧的创建与销毁——图解
|
11月前
|
C语言
抽丝剥茧C语言(中阶)函数栈帧的创建与销毁——图解(下)
抽丝剥茧C语言(中阶)函数栈帧的创建与销毁——图解
|
11月前
|
C语言
C语言之函数栈帧的创建与销毁讲解(2)(二)
C语言之函数栈帧的创建与销毁讲解(2)
|
11月前
|
C语言
C语言之函数栈帧的创建与销毁讲解(2)(一)
C语言之函数栈帧的创建与销毁讲解(2)
|
12月前
|
存储 编译器 C语言
C语言番外-------《函数栈帧的创建和销毁》知识点+基本练习题+完整的思维导图+深入细节+通俗易懂建议收藏(一)
C语言番外-------《函数栈帧的创建和销毁》知识点+基本练习题+完整的思维导图+深入细节+通俗易懂建议收藏(一)
|
12月前
|
C语言
C语言番外-------《函数栈帧的创建和销毁》知识点+基本练习题+完整的思维导图+深入细节+通俗易懂建议收藏(二)
C语言番外-------《函数栈帧的创建和销毁》知识点+基本练习题+完整的思维导图+深入细节+通俗易懂建议收藏(二)