北理工考研885知识点拾遗03:C字符串 木灵的炼金工作室

9. C字符串的基础

在C语言中,字符串实际上是使用null字符'\0'终止的一维字符数组。因此,一个标准的字符串实际的占用空间比能够看到的字符数多1个字节(8位)。

字符串通常使用如下的方式初始化

char string[] = "Amachi";

C编译器会在使用上述初始化时自动推导数组长度(7,有一个\0),并且自动为其末尾增添一个\0

使用如下的显式初始化也是可以的

char string[7] = {'A', 'm', 'a', 'c', 'h', 'i', '\0'};

但请为数组留出足够的长度来放一个\0

10. C字符串标准库

  1. 字符串操作算法
    1. char* strcpy(char* target, char* str):将str指向的串拷贝到target指向的内存空间,并返回target。需要str串有\0截止符。不会改变target的空间,可能会冲毁堆栈。
    2. char *strcat(char *target, const char *str):将str指向的串复制到target串的末尾,并返回target。需要均有\0符号。不会改变target的空间,可能会冲毁堆栈。
    3. int strcmp(const char *str1, const char *str2):比较两个串的字典序,返回值为0表示完全相同,返回值为正表示str1的字典序较大,为负表示str2的字典序较大。
    4. char *strchr(const char *str, int c):在str中找到c第一次出现的位置并返回其指针。若未找到则返回0
    5. char *strstr(const char *haystack, const char *mode):模式匹配。在haystack中找到mode第一次出现的位置,并返回其指针,若未出现则返回0。
    6. int strlen(char*):获取字符串长度(不含’\0’)。
  2. 输入输出及格式化输入输出
    1. gets(char*)用于输入一整行字符串,自动加\0,不会分配内存空间。
    2. puts(chhar)用于输出字符串。
    3. scanf / printf("%s", char*)用于输入 / 输出字符串,但遇到空格会终止读取。

11. 转义字符

除了常见的转义字符外,C支持形如\ddd(8进制)或\xdd(16进制)来直接将8或16进制的ASCII码转换为字符。输入超出ASCII范围的转义字符是未定义的行为。

如果\后的模式未能匹配所有的转义模式,那么C编译器会直接忽视掉\,重新进行词法分析。故串"EOF\=-\61\""的串长度是8,数组长度是9。


Copyright AmachiInori 2017-2021. All Right Reserved.
Powered By Jekyll.
amachi.com.cn