<string.h>
是 C 标准库中的一个非常重要的头文件,专门用于字符串的操作。它提供了大量的函数,用于处理 C 语言中的字符串,包括字符串的复制、连接、比较、查找等操作。
📖 目录
1️⃣ <string.h>
简介
<string.h>
提供了处理字符串和内存的函数。在 C 语言中,字符串本质上是以 \0
(空字符)结尾的字符数组,因此这些函数大多是基于字符数组来实现的。<string.h>
中的函数不仅用于操作字符串,还可以操作内存块,进行拷贝、比较、查找等操作。
功能
- 字符串复制、连接、比较、查找。
- 内存的拷贝、设置和比较。
- 字符串长度、查找子串等。
2️⃣ 常用函数
📌 字符串操作函数
strlen
:计算字符串的长度。strcmp
:比较两个字符串。strcpy
:复制一个字符串。strcat
:连接两个字符串。strchr
:查找字符在字符串中的第一次出现。strstr
:查找子字符串。strncpy
:复制指定长度的字符串。strncat
:连接指定长度的字符串。
📌 内存操作函数
memcpy
:复制内存块。memmove
:移动内存块(支持重叠区域)。memset
:设置内存区域的值。memcmp
:比较两个内存块。
3️⃣ 字符串操作函数
📌 strlen
strlen
用于计算字符串的长度,返回字符串中字符的个数(不包括空字符 \0
)。
原型:
size_t strlen(const char *str);
- 参数:
str
:要计算长度的字符串。 - 返回值:字符串的长度(不包括
\0
)。
示例:
char str[] = "Hello, World!";
size_t len = strlen(str); // len = 13
printf("Length: %zu\n", len);
📌 strcmp
strcmp
用于比较两个字符串的大小。比较是基于字典顺序进行的。
原型:
int strcmp(const char *str1, const char *str2);
- 参数:
str1
:第一个字符串。str2
:第二个字符串。
- 返回值:
- 返回
0
表示两字符串相等。 - 返回负值表示
str1
小于str2
。 - 返回正值表示
str1
大于str2
。
- 返回
示例:
char str1[] = "apple";
char str2[] = "banana";
int result = strcmp(str1, str2); // result < 0
📌 strcpy
strcpy
用于将一个字符串复制到另一个字符串。
原型:
char *strcpy(char *dest, const char *src);
- 参数:
dest
:目标字符串,存放复制内容。src
:源字符串,提供要复制的内容。
- 返回值:返回
dest
字符串的指针。
示例:
char src[] = "Hello";
char dest[10];
strcpy(dest, src); // dest = "Hello"
📌 strcat
strcat
用于将一个字符串追加到另一个字符串的末尾。
原型:
char *strcat(char *dest, const char *src);
- 参数:
dest
:目标字符串,追加内容。src
:源字符串,提供要追加的内容。
- 返回值:返回
dest
字符串的指针。
示例:
char str1[20] = "Hello";
char str2[] = " World!";
strcat(str1, str2); // str1 = "Hello World!"
📌 strchr
strchr
用于查找字符在字符串中的第一次出现。
原型:
char *strchr(const char *str, int ch);
- 参数:
str
:要搜索的字符串。ch
:要查找的字符。
- 返回值:返回指向字符
ch
在字符串中第一次出现位置的指针,如果没有找到返回NULL
。
示例:
char str[] = "Hello World!";
char *ptr = strchr(str, 'o'); // ptr 指向第一个 'o'
📌 strstr
strstr
用于查找子字符串在字符串中的第一次出现。
原型:
char *strstr(const char *haystack, const char *needle);
- 参数:
haystack
:要搜索的主字符串。needle
:要查找的子字符串。
- 返回值:返回指向子字符串第一次出现位置的指针,如果没有找到返回
NULL
。
示例:
char str[] = "Hello, World!";
char *ptr = strstr(str, "World"); // ptr 指向 "World"
4️⃣ 内存操作函数
📌 memcpy
memcpy
用于复制指定大小的内存块。
原型:
void *memcpy(void *dest, const void *src, size_t n);
- 参数:
dest
:目标内存块。src
:源内存块。n
:要复制的字节数。
- 返回值:返回指向目标内存块的指针。
示例:
char src[] = "Hello";
char dest[6];
memcpy(dest, src, 6); // dest = "Hello"
📌 memmove
memmove
用于复制内存块,支持内存区域重叠。
原型:
void *memmove(void *dest, const void *src, size_t n);
- 参数:
dest
:目标内存块。src
:源内存块。n
:要复制的字节数。
- 返回值:返回指向目标内存块的指针。
📌 memset
memset
用于设置内存块的内容。
原型:
void *memset(void *str, int c, size_t n);
- 参数:
str
:目标内存块。c
:要设置的值(以字节为单位)。n
:要设置的字节数。
- 返回值:返回指向目标内存块的指针。
5️⃣ 示例代码
📌 示例:字符串操作
以下代码展示了如何使用 strcpy
和 strcat
函数。
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello";
char dest[20];
strcpy(dest, src); // 将 src 复制到 dest
printf("Copied string: %s\n", dest);
strcat(dest, " World!"); // 将 " World!" 连接到 dest 后
printf("Concatenated string: %s\n", dest);
return 0;
}
输出:
Copied string: Hello
Concatenated string: Hello World!
6️⃣ 参考资料
📖 C 标准库 – <string.h>
官方文档
📖 GNU C Library – string.h
📖 ISO C 标准(PDF)
📌 总结
<string.h>
是 C 标准库中用于处理字符串和内存操作的头文件。它提供了字符串复制、连接、查找、比较等操作函数,并且也有内存操作函数如 memcpy
和 memset
,极大地简化了 C 语言中的字符串和内存操作。
发表回复