你好, 欢迎回来｡
我想继续讨论 标准c库中的一些函数｡
这是很多功能 我们已经在课堂上讲过了, 但我想提醒你们
所以有很多重要的
c标准库中的各种函数 在整个课程中,
我们都在使用所有示例和所有 我们学到的东西｡
我们谈了很多关于 字符串函数｡
而且其中一些非常容易使用 还有一些我们会经常用到,
所以你们应该很熟悉｡
要使用这些函数中的任何一个, 您需要包括头文件字符串｡
h, 一切 在字符串中定义｡ h.工作人员
我们谈到了猫｡
字符串cat连接两个 字符串, 两个参数,
两个字符指针｡
它将返回一个字符 连接到另一个指针的指针｡
因此, 将空字符 最后一个字符串的结尾,
则函数返回s1｡
Str char this搜索 包含字符的字符串｡
这将返回 角色也星星了｡
这是一个很好的搜索方式｡
我们谈过这个 有点像猫｡
正在进行字符串比较 若要比较两个字串, 请执行下列动作｡
这是你的标准做法｡
它需要两个指针 它将返回一个整数｡
我们确实有一些这样的例子 基本上如果你返回0两个字符串相等｡
如果我们返回大于或小于
如果大于0, 则表示s1通常为 字母大小更大｡
所以如果你传入一个 包含a,
而第二个字符串是b, 则将返回大于 因为a小于b, 所以它会小于零｡
如果传入b作为第一个 参数,
而c是第二个参数某种字符串 从b或c开始, 它将返回大于零的值｡
所以你要明白 那些返回值｡
这才是最重要的｡
字符串副本
这就是您如何分配 一个字符串到另一个字符串｡
请记住, 字符串､
指针和 字符数组, 则不能直接为字符串赋值 使用赋值运算符｡
对于整型和浮点型, 可以 只需使用等号运算符｡
用绳子就不行了｡
因此, 在执行以下操作时必须使用str copy 要将字符串赋给指针､
字符指针或字符数组｡
您可以初始化角色 双引号内字符串常量数组
但在那之后,
在 初始化如果要更改它, 则必须使用字符串复制｡
字符串长度
另一个重要功能 获取字符串的长度｡
这将返回大小t, 即 表示长度的整数｡
所有这些字符串函数 将指针或字符数组作为参数｡
所以我们需要了解 这是如何运作的｡
其他字符串函数strncat.
记住所有功能 而不是加结尾更安全一点
没有缓冲区溢出｡
所以strncat中的第三个参数 这将表示复制或连接这么多参数｡
通常, 第三个参数为
第一个参数的大小, 因为您不希望 复制比这更大的东西｡
这些功能应
使用其他字符串函数, 因为它们 缓冲区溢出安全｡
字符串比较｡
同样, 你要比较 s1和s2的字符数｡
Strn copy, 此处为第三个参数
end可能是s1的字符串长度或大小｡
因为你要复制s2和 但是您不希望复制的字节数超过s1可以容纳或存储的字节数｡
字符串
您可以在此搜索 返回字符最后一次出现的字符串｡
你会注意到这看起来 与str字符相似, 这里有一个额外的r｡
所以不是返回第一个 出现,
这将返回最后一个出现, 但您使用了 和另一个一样｡
字符串
这将搜索一个字符串｡
这是一个搜索函数 你实际上是在字符串中寻找一个子串｡
同样, 取两个字符指针｡
斯特托克
这是一个重要的功能 它可以帮助您解析数据｡
Strtok将分隔符视为
第二个参数, 它将查找分隔符 字符串内的任意位置｡
所以你经常会用 s2的空格或换行｡
它会将字符串分解为 多个不同的令牌｡
同样, 在需要时使用 来分析数据｡
每次你必须打电话给strtok
多次, 直到您使用null, 如果您仍然 在给定的字符串中查找下一个要查找的tok｡
我们也有一些重要的 字符函数｡
所有字符函数 是在ctype中定义的｡ h.工作人员
我们的角色功能 用于检查字符是否
字母数字或空白或控件
字符一个数字, 有许多不同的功能｡
所以请记住这一点｡ h允许 我们来检查这些不同的字符到底是什么｡
我们也有一些转换函数 在ctype中｡ h, 主要是我们两个鞋面｡
两个下级取一个字符 它会给予出c的小写等价物｡
还记得我们有个挑战吗 我们将小写字母转换为大写字母｡
在这个挑战中, 我们实际上加入了
但我们可以调用字符的两个upper｡
我们本可以在教堂周围放两个 字符,
只要我们包括ctype｡ h, 并将转换为 将小写字母转换为大写字母｡
我们有很多IO 函数､ 输入和输出｡
我们集中精力阅读和
写文件, 但我们也从键盘读取输入, 并输出 数据到控制台或屏幕｡
因此, 要使用最常见的IO 函数, 这都是标准化的｡
h头文件｡
此文件具有
不同的IO函数以及常量的定义, 如 文件结束､ 标准输出中的空标准和标准错误｡
这些都是常量值｡
还有一个常数 文件结构文件｡
Fclose是一个我们 用来关闭我们的溪流｡
它将关闭文件 由文件指针标识｡
如果它是 关闭成功, 否则为eof｡
Feof, 这是一个我们没有 明确使用, 但会检查您是否在结尾
与比较一个常量相反, 你可以做一个feof｡
冲洗
这是一个将刷新 内部缓冲区的所有数据｡
有时候你需要这么做 当你想重新开始的时候, 你基本上只是在摆脱
缓冲区内的任何内容｡
我们也有fgetc｡
这是阅读中的个别 字符, 则采用文件指针｡
我们没有位置｡
这是一些 定位功能｡
它获取当前文件位置
与文件指针相关联的文件, 并存储它 在标准io中定义的f位置类型中｡
h也是如此｡
我们有过节｡
这是阅读字符串｡
很好看, 看字 从指定的档案,
但字符数｡
Fopen将打开 特定模式：使用文件指针读取､
写入或追加｡
Fprintf将写入数据并格式化 输出, 它类似于printf函数,
它将 参数,
然后使用格式化数据写入｡
所以你可以写整数双精度数 使用格式说明符, 然后使用要编写的变量｡
我们还有fputc, 它将 将字符写入文件｡
Fputs会将一个字符串写入文件｡
它需要一个缓冲区和一个文件 要写入的内容和要写入的文件的指针｡
Fscanf将从文件中读取数据｡
它将获取输入, 并 它将使用与scanf相同的格式
格式说明符和变量｡
但你想这样很好 读入由空格分隔的数据｡
您可以使用fscanf并指定 类型so将其直接读入整型､
双精度型和特定数据类型｡
Fseek会移动位置 你所指向的文件的位置｡
所以你不必从 文件的开头或结尾｡
您可以直接前往 文件的中间｡
一旦您找到了那个位置, 您
下一次读取或写入将使用要写入或读取位置｡
偏移位置类似于fseek｡
它设置当前文件位置 在与指向值的文件指针相关联的文件中 由f位置fpos指向｡
我们也吃过｡
Ftell会如何返回 许多字节从开始你是基于文件指针｡
所以这是相对于 从当前位置开始的字节数, 不总是从开头开始,
而是当前位置｡
我们在我们的一个 反向读取文件的挑战｡
打印
我们用这个可能更多 比其他任何功能都重要｡
这是显示 输出到屏幕｡
它使用格式说明符 以及由逗号分隔的可变数量的参数｡
Printf对于调试非常有用 和显示输出,
这在c程序中做得相当多｡
移除｡
Remove是一个函数, 其中 您可以删除文件｡
它需要一个文件名｡
必须关闭文件指针｡
你不能打开它｡
“重命名”会将一个文件重命名为 另一个文件也必须关闭, 该文件不能打开｡
Scanf将从以下位置读取输入 通常默认从键盘输入｡
您可以将其更改为读取输入 从其他数据流中提取｡
我们还有转换函数 我们在整个课程中都讨论过｡
这些函数中的大多数都位于 标准库 h文件､ 头文件｡
我们有atof函数｡
这是将字符串转换为 浮点数, 然后以字符串形式传递
我们有很多功能｡
此转换 字符串转换为整数｡
Atol正在将字符串转换为 长整型, 然后传入字符串,
它将返回 要转换到方法
这些都很有用｡
您经常使用这些来转换 字符串转换为某种数字类型｡
Atoll将其转换为long long int｡
但请务必查看 更多转换函数的标准lib头文件｡
我们有我们的记忆功能, 动态内存分配功能｡
这些真的很重要｡
动态内存分配很重要 因为它效率更高｡
您只能使用 您需要的内存｡
您不创建静态数据｡
它允许您的程序 变得更加灵活｡
所有这些功能 包括在标准库中｡ h.工作人员
我们谈过卡尔洛克｡
Calloc是一个很棒的函数, 你可以分配一个特定的大小,
然后乘以n｡
因此可以指定数据类型 而且会成倍增加｡
Calloc的好处是, 它会初始化数据｡
所以它比malloc更受欢迎｡
我们有我们的自由函数 这将删除存储器｡
所有这些记忆 在堆上创建｡
所以我们会经常来 更长的时间, 但这取决于你作为一个程序员来管理这个内存｡
你总是想解放你的
因为内存是一种稀缺资源, 我们想使用这些内存｡
所以以后总是打免费电话 执行calloc或malloc｡
Malloc是一个更简单的 创建内存的版本｡
实际上它并不 初始化任何数据｡
它只是把大小作为一个参数｡
它会传回void星星｡
所以你总是需要 就像使用calloc指向任何类型的内存一样｡
如果指向int或 float, 你必须投那个｡
我们也有realloc｡
Realloc非常棒, 因为您可以 实际上增加了现有内存｡
这样你的 存储器可以是动态｡
如果满足以下条件, 则可以将其放大 您希望存储更多数据｡
Realloc接受大小中的指针｡
它会保存所有 前一个内存指向的位置｡
它将分配新的内存 但是它会保留它,
所以你可以添加到一些现有的内存中｡
非常非常有用｡
在动态创建内存中 在你所有的程序中都很有用 指针非常非常重要,
因为它们效率更高
但要确保你了解所有 我们在整个课程中都会用到这些头文件｡
这些是 是非常非常重要的
我们将在 接下来几节课, 我们没有像我喜欢那样讨论太多
但这些都是一些 也是重要的｡
-谢谢—谢谢