C语言笔记进阶篇第二章:字符串函数和内存函数

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言笔记进阶篇第二章:字符串函数和内存函数相关的知识,希望对你有一定的参考价值。

目录

(1)分类

(2)字符串函数

A:strlen(求字符串长度)

B:strcpy(字符串复制_不受限制)

C:strcat(字符串追加_不受限制)

D:strcmp(字符串比较_不受限制)

E:strncmp(字符串复制_受限制)

F:strncat(字符串追加_受限制)

G:strncmp(字符串比较_受限制)

H:strstr(查找字符串)

I:strtok(字符串切割)

J:strerror

(3)字符函数

A:字符分类函数

B:字符转换函数(常用的转大写和转小写)

(4)内存函数

A:memcpy(不重叠内存拷贝函数)

B:memmove(重叠内存拷贝函数)


前言:C语言中会大量涉及到对字符和字符串的处理,但是C语言本身是没有字符串类型的,按照之前所学,需要处理字符串时,我们通常将其保存在一个字符数组或者是定义为常量字符串

(1)分类

 

(2)字符串函数

A:strlen(求字符串长度)

第一:strlen的基本用法

第二:strlen的注意事项

①:对于其返回值的注意事项

如下,从主观角度上讲,最终的输出结果和我们预期的是不一致的,这是因为strlen返回的类型是size_t,查看定义可知,size_t实际上就是unsignend int,编写库函数的人的设置这样的返回值的目的就在于他们认为字符串长度绝对不可能是负数。但是这样的一个设置,有时就会产生如下的歧义

第三:模拟实现strlen

①:计数器的方式

②:递归(不创建临时变量)

 

③:指针-指针

B:strcpy(字符串复制_不受限制)

第一:strcpy的基本用法

第二:strcpy的注意事项

①:源字符串必须以'\\0'结束

也就是如果使用字符数组的方式赋值,最后的元素必须是'\\0',不然会找不到结束标志的

②:不要赋值到常量字符串中去

常量字符串是不可变的,也就是不能修改的

第三:模拟实现strcpy

 

C:strcat(字符串追加_不受限制)

第一:strcat的基本用法

第二:strcat的模拟实现

D:strcmp(字符串比较_不受限制)

第一:strcmp的基本用法

第二:strcmp注意事项

C语言中规定,大于时返回的是大于0的数字,小于时返回的是小于0的数字,但是在VS编译器下,他返回的数字却是固定的1或-1,所以为了使得代码更具有通用性,利用strcmp在判断字符串大小时,正确的写法如下

第三:strcmp模拟实现

E:strncmp(字符串复制_受限制)

第一:strncmp的基本用法

第二:strcmp的注意事项

第三:模拟实现strncpy

F:strncat(字符串追加_受限制)

第一:strnact的基本用法

第二:strncat的注意事项

如果要追加的字符个数超过了源字符串长度,那么只把应该追加的追加后补上'\\0'再就不管了

第三:strncat的模拟实现

G:strncmp(字符串比较_受限制)

第一:strncmp的基本用法

第二:strncmp模拟实现

H:strstr(查找字符串)

第一:strstr的基本用法

第二:strstr的模拟实现

关于字符串查找,其实就是数据结构中串那一章的串的模式匹配算法,属于暴利匹配,具体查阅相关部分

I:strtok(字符串切割)

第一:strtok的基本用法

 

J:strerror

第一:strerror的基本用法

 

当使用库函数时,有时会出现错误,引入<errno.h>,系统会生成一个全局变量errno,出现错误后系统就会生成错误码并赋值给errno,但是我们并不知道错误码真正的含义,而strerror就是用来翻译这个错误码的,函数返回值是char*,也就是一个字符串。比如在打开文件时经常会遇到打开文件失败,而打开文件失败的原因有很多种,此时我们就可用strerror函数来查看究竟是什么原因

(3)字符函数

A:字符分类函数

#include <ctype.h>

B:字符转换函数(常用的转大写和转小写)

(4)内存函数

上述我们研究的函数都是针对字符串而言的,但是对于整形数组,结构体这样的数据是不能用字符串函数进行操作的,所以就要使用内存函数

A:memcpy(不重叠内存拷贝函数)

第一:memcpy的基本用法

第二:memcpy的模拟实现

B:memmove(重叠内存拷贝函数)

第一:memmove基本用法

C:memcmp(内存比较函数)

以上是关于C语言笔记进阶篇第二章:字符串函数和内存函数的主要内容,如果未能解决你的问题,请参考以下文章

C语言进阶学习笔记三字符串函数+内存函数详解

C语言进阶学习笔记三字符串函数详解(爆肝吐血整理,建议收藏!!!)

C语言进阶学习笔记七程序执行+调试技巧(实用技巧篇)

C语言进阶:字符串和内存函数

C语言进阶之旅 (11.5)指针下 提升篇

C语言进阶—— 字符操作函数+内存操作函数详解 (吐血爆肝 !!!)