07-C语言字符串

plana_lab 发布于 22 天前 29 次阅读



定义和由来

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
此作者没有提供个人介绍。
最后更新于 2026-09-17