定义和由来
C 语言没有独立的 string 字符串类型。C 语言中的字符串通常使用以 ‘\0’ 结尾的 char 数组表示。
使用例:
char a[]={'A','B','C','D','\0'};
char b[]={"hello"};//两个都是c的合法写法,是逐个输入和全部输入2种写法,b类型编译器会自己加入"\0"字符串的操作
字符串的操作
C 语言提供了 <string.h>
头文件,用于进行常见的字符串操作。
使用前需要:
#include <string.h>常用字符串函数
| 函数 | 作用 |
|---|---|
strlen() | 获取字符串长度 |
strcpy() | 复制字符串 |
strcat() | 连接两个字符串 |
strcmp() | 比较两个字符串 |
strchr() | 查找字符第一次出现的位置 |
strstr() | 查找字符串第一次出现的位置 |
strlen() ——
获取字符串长度
char a[] = "Hello";
printf("%zu\n", strlen(a));输出:
5
strlen() 会从字符串开头开始计算字符数量,直到遇到
'\0' 为止。
注意:
'\0'不计算在字符串长度中。
strcpy() —— 复制字符串
char a[20];
char b[] = "Hello";
strcpy(a, b);
printf("%s\n", a);执行后:
a = "Hello"
也就是:
strcpy(目标, 源)
strcat() —— 连接字符串
char a[20] = "Hello ";
char b[] = "World";
strcat(a, b);
printf("%s\n", a);输出:
Hello World
也就是把 b 连接到 a 的末尾:
a = "Hello " + "World"
= "Hello World"
注意:目标数组必须有足够的空间存放连接后的字符串。
strcmp() —— 比较字符串
char a[] = "Hello";
char b[] = "Hello";
printf("%d\n", strcmp(a, b));如果两个字符串完全相同:
0
strcmp() 的返回值:
0 → 两个字符串相同
< 0 → s1 小于 s2
> 0 → s1 大于 s2
比较的是字符串的字符顺序,而不是字符串长度。
strchr() —— 查找字符
char a[] = "Hello";
char *p = strchr(a, 'l');strchr()
会返回一个指针,指向字符串中第一次出现该字符的位置。
例如:
Hello
↑
第一次出现 'l'
strstr() —— 查找字符串
char a[] = "Hello World";
char *p = strstr(a, "World");strstr()
会返回一个指针,指向字符串中第一次出现目标字符串的位置。
Hello World
↑
World
小结
最常用的几个字符串函数:
strlen() → 获取长度
strcpy() → 复制
strcat() → 连接
strcmp() → 比较
strchr() → 查找字符
strstr() → 查找字符串
这些函数都来自:
#include <string.h>注意,字符串结尾的 ‘\0’ 不会被 strlen() 计算。
使用例:
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[14] = "hello,";
char str2[14] = "world";
char str3[14];
int len ;
/* 复制 str1 到 str3 */
strcpy(str3, str1);
printf("strcpy( str3, str1) : %s\n", str3 );
/* 连接 str1 和 str2 */
strcat( str1, str2);
printf("strcat( str1, str2): %s\n", str1 );
/* 连接后,str1 的总长度 */
len = strlen(str1);
printf("strlen(str1) : %d\n", len );
return 0;
}运行结果
strcpy( str3, str1) : hello,
strcat( str1, str2): hello,world
strlen(str1) : 11
Comments NOTHING