C字符与字符串(知识梳理)

1 字符串和字符基础
● 字符是构造源程序的基本单位。每个程序都是由一系列字符组成的。当这些字符有意义地组合在一起后,就被计算机解释成能够完成某个任务的一串指令
● 字符常量是一个整型值,用单引号引起来的字符来表示。字符常量的值就是机器字符集中该字符对应的整型值
● 字符串是被当成一个整体来对待的一串字符。组成字符串的字符可以是字母、数字或者诸如+、-、*、/、$之类的各种字符。在C语言中,字符串文本或字符串常量是被写在字符双引号中的
● C语言中的字符串是一个以空字符(’\0’)作为结束符的字符数组
● 访问一个字符串是通过指向其首字符的指针来实现的。字符串的值就是它首字符的地址
● 一个字符数组或一个类型为 char *的变量在定义时可以用一个字符串来进行初始化
● 定义一个用来包含字符串的字符数组时,数组必须大到足以存储字符串和字符串结束符
● 可以用函数scanf来将一个字符串存储到一个数组中。scanf将不断地读入字符直到遇到空格、tab键、换行符或者文件结束符为止
● 对于一个要以字符串形式打印的字符数组,这个数组必须包含字符串结束符

2 字符处理函数库
● 函数isdigit(数字)来判定它的实参是否是一个数字(0到9)
● 函数isalpha(字母)来判定它的实参是否是一个字母(大写字母或者小写字母)
● 函数isalnum(字母和数字)来判定它的实参是否是一个字母或数字
● 函数isxdigit(十六进制数字)来判定它的实参是否是一个十六进制数数字(0到9,A到F,a到f)
● 函数islower(小写字母)来判定它的实参是否是一个小写字母(a到z)
● 函数isupper(大写字母)来判定它的实参是否是一个大写字母(A到Z)
● 函数toupper将一个小写字母转换成一个大写字母并返回这个大写字母
● 函数tolower将一个大写字母转换成一个小写字母并返回这个小写字母
● 函数isspace用来判定它的实参是否是如下空白字符之一:‘ ’(空格),‘\f’(换页符),‘\n’(换行符),‘\r’(回车符),’\t’(水平制表符),’\v’(垂直制表符)
● 函数iscntrl用来判定它的实参是否是如下控制字符之一:‘\f’(换页符),‘\n’(换行符),‘\r’(回车符),’\t’(水平制表符),’\v’(垂直制表符),’\a’(报警),’\b’(退格)
● 函数ispunct用来判定它的实参是否是一个除了空格、数字、字母以外的可打印字符
● 函数isprint用来判定它的实参是否是一个包含空格在内的任意可打印字符
● 函数isgraph用来判定它的实参是否是一个可打印字符而不是一个空格

3 字符串转换函数
● 函数strtod将一个表示浮点数的字符序列转换为双精度浮点数。函数strtod接收两个实参——字符串(char 类型)和指向 char 类型的指针。字符串包含一个待转换的字符序列。转换完成后字符串中余下部分的地址,或者在字符串任何部分都不能转换成浮点数时整个字符串的地址,就赋值给指向 char* 的指针所指向的存储单元
● 函数strtol将一个表示整型数的字符序列转换为 long 型数值。函数 strtol 接收三个实参——字符串(char *类型),指向字符串的指针以及一个整型数。字符串包含一个待转换的字符序列,转换完成后字符串余下部分的地址,或者在字符串任何部分都不能转换时整个字符串的地址,就赋值给指向char *的指针所指向的存储单元。而那个整型数则规定了被转换数值的基数
● 函数strtoul将一个表示整数的字符序列转换成 unsigned long int 型数值,其功能与 函数strtol 相同

4 标准输入/输出库函数
● 函数fgets 不断地读入字符直到遇到换行符或者文件结束符为止。传给函数 fgets 的实参可以是一个字符型数组、可以读入的最多字符个数和欲读取的输入流。当读入结束后将空字符追加到数组的末尾。若遇到一个换行符,它也被加入到输入的字符串中
● 函数putchar 的功能是打印出它的实参字符
● 函数getchar 从标准输入中读入一个字符,并以整型值的形式将其返回。若遇到的是文件结束标志,则函数 getchar返回EOF
● 函数puts接收一个字符串(char *型)作为实参,然后将其打印出来并换行
● 函数sprintf 使用与函数 printf 相同的转换说明符,将格式化的数据输出到一个字符型数组中
● 函数sscanf 使用与函数 scanf相同的转换说明符,从字符串中读入格式化的数据

5 字符串处理函数库中的字符串处理函数
● 函数 strcpy 将它的第二个实参(一个字符串)复制到第一个实参(一个字符数组中)。必须确保这个数组大到足够存储这个字符串和字符串结束符
● 函数 strncpy 和strcpy 的功能是等价的,不同之处是对strncpy的调用要指定从字符串中复制到数组中的字符个数。仅在要复制字符的数目比字符串长度大1时,才将字符串结束符复制到数组中
● 函数strcat 将第二个实参字符串——包括字符串结束符——拼接到第一个实参字符串的末尾。第二个实参字符串的第一个字符将替换第一个实参字符串中的空字符(’\0’)。必须确保用于存放第一个字符串的数组足够大,以同事存放第一个字符串和第二个字符串
● 函数strncat 将第二个字符串中指定数目的字符拼接到第一个字符串的末尾。表示字符串结束的空字符会自动添加到结果字符串的末尾

6 字符串处理函数库中的比较函数
● 函数strcmp逐个字符的比较第一个实参字符串和第二个实参字符串。当字符串相等时,函数返回0。当1小于2时,函数返回负值。当1大于2时,函数返回正值
● 函数strncmp与strcmp是等价的,不同之处在于strncmp比较两个字符串到指定数目为止。若某个字符串的字符个数小于指定的字符比较数目,则函数strncmp在遇到较短字符串的空字符后就停止比较了

7 字符串处理函数库中的查找函数
● 函数strchr 在一个字符串中查找某个字符第一次出现的位置。若找到该字符,则函数strchr返回指向字符串中该字符的指针,否则函数返回NULL
● 函数strcspn确定第一个实参字符串中不包含第二个实参字符串中任一字符的起始字符串片段的长度。函数返回字符串片段的长度
● 函数strpbrk在第一个实参字符串中查找第二个实参字符串中的任一字符第一次出现的位置。若找到第二个实参字符串中的某个字符,则函数返回指向第一个实参中该字符的指针,否则函数返回NULL
● 函数strrchr在一个字符串中查找某一字符最后一次出现的位置。若找到这个字符,函数返回指向字符串中该字符的指针,否则函数返回NULL
● 函数strspn确定第一个形参字符串中只包含第二个实参字符串中的字符的起始字符串片段的长度。函数返回字符串片段的长度
● 函数strstr在第一个实参字符串中查找第二个实参字符串首次出现的位置。若在第一个字符串中找到第二个字符串,则函数返回指向第一个字符串中第二个字符串位置的指针
● 多次连续地调用 strtok 可以将实参字符串 s1 分解成由第二个实参字符串 s2 中的字符作为分隔符分隔而成的若干个标号。第一次调用函数 strtok 需要将字符串s1 作为第一个实参,而后继的对同一个字符串进行标号化的调用则必须将NULL作为第一个实参。每次调用返回指向当前标号的指针。若调用不在能得到新的标号,则函数返回NULL

8 字符串处理函数库中的内存处理函数
● 函数 memcpy 将第二个实参所指对象中指定数目的字符复制到第一个实参所指的对象中。该函数可以接收指向任意类型对象的指针作为实参
● 函数memmove将第二个实参所指对象中指定数目的字节复制到第一个实参所指向的对象中。复制的过程就好比是第二个实参中的字节先被复制到一个临时的字符数组中,然后再从这个临时数组复制到第一个实参中
● 函数memcmp将第一个实参与第二个实参中指定数目的字节进行比较
● 函数memchr在一个对象的指定数目的字节中,查找一个表示为 unsigned char 的单字节数据首次出现的位置。若找到此字节,则函数返回指向该字节的指针,否则函数返回NULL
● 函数memset将第二个实参,当成一个无符号字符,复制到第一个实参所指对象的指定数目的字节中

9 字符串处理函数库中的其他函数
● 函数 strerror 将以整数表示的错误号按照本地化的形式映射成一个纯文本字符串,并返回指向这个字符串的指针
● 函数 strlen 接受一个字符串作为实参,然后返回字符串中字符的个数——字符串结束符不包括在字符串长度中

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枳洛淮南✘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值