前言
C语言字符串学习笔记
字符串的初始化
传送门
引入头文件
获取字符串长度
- 返回字符串长度
- 只会处理字节的长度,所以中文并不会算做1个字符,而是由字符编码集决定
- 不包含字符串末尾的
'\0'
字符
<str>
:字符串变量
字符串追加(字符串合并)
- 将第二个字符串追加到第一个字符串末尾
- 要求:前一个字符串的空间需要大于等于两个字符串长度的总和+1,否则会造成溢出
<str_1>
:前一个字符串
<str_2>
:后一个字符串
1
| strcat(<str_1>, <str_2>);
|
字符串有限追加
- 只在第一个字符串末尾追加指定长度的第二个字符
- 防止因为第一个字符串空间不够造成溢出
<num>
:第二个字符串需要作为追加字符串的长度
1
| strncat(<str_1>, <str_2>, <num>);
|
字符串比较
- 比较两个字符串是否相同
- 返回0表示相同,非0表示不相同
1
| strcmp(<str_1>, <str_2>);
|
字符串有限比较
<num>
:指定比较几个字符
1
| strncmp(<str_1>, <str_2>, <num>);
|
字符串拷贝
1
| strcopy(<str_1>, <str_2>);
|
字符串有限拷贝
<num>
:指定拷贝的长度
1
| strncopy(<str_1>, <str_2>, <num>);
|
不超长度的拷贝
1
| strncopy(<str_1>, <str_2>, sizeof(<str_1>-1));
|
输出字符串
输出到标准输出设备
<str>
:字符串
输出到字符数组
<arr>
:输出到的字符数组
1
| sprintf(<arr>, "%s", <str>);
|
输入字符串
从标准输入设备输入
<str>
:输入到的变量
从字符数组中输入
<arr>
:从字符数组中输入
&i
、&j
:输入到的变量
1 2 3
| char <arr>[4] = "1+2"; int i, j; sscanf(<arr>, "%d+%d", &i, &j);
|
查找子串
通过首字符查找子串
- 返回从指定字符开始到原字符串末尾的子字符串
- 如果不存在返回NULL(空指针)
<str>
:需要查找的字符串
<char>
:可能会出现的子串的首字符
1
| strchar(<str>, '<char>');
|
通过字符串查找子串
- 返回从指定字符串开始到原字符串末尾的子字符串
- 如果不存在返回NULL(空指针)
<str_son>
:可能会出现的子串的首字符串
1
| strstr(<str>, "<str_son>");
|
字符串分割
- strtok函数会返回指针
- strtok第一次调用需要指定需要分割的字符串
- strtok第二次及以后的调用只需要传递NULL
- strtok最后一次调用后继续调用,会返回空
1 2 3
| char *s; s = strtok(<str>, "_"); s = strtok(NULL, "_");
|
遍历分割后的字符串
1 2 3 4 5 6
| char *s; s = strtok(<str>, "_"); while (s) { s = strtok(NULL, "_"); }
|
完成