C 标准库 - <string.h>
概述
<string.h>
是 C 语言标准库中的一个头文件,它包含了用于字符串操作的函数。这些函数主要用于处理以 null 结尾的字符串,即以 '\0' 字符结束的字符数组。<string.h>
提供了一系列函数,用于执行字符串的复制、连接、比较、搜索等操作。
主要函数
字符串复制
strcpy(s1, s2);
:将字符串s2
复制到字符串s1
中,包括终止的 null 字符。strncpy(s1, s2, n);
:将s2
的前n
个字符复制到s1
中。如果s2
的长度小于n
,则s1
的剩余部分将填充 null 字符。
字符串连接
strcat(s1, s2);
:将字符串s2
连接到字符串s1
的末尾,s1
必须有足够的空间来存放结果字符串。strncat(s1, s2, n);
:将s2
的前n
个字符连接到s1
的末尾。
字符串比较
strcmp(s1, s2);
:比较字符串s1
和s2
,如果s1
小于s2
返回负数,如果相等返回 0,如果s1
大于s2
返回正数。strncmp(s1, s2, n);
:比较s1
和s2
的前n
个字符。
字符串搜索
strstr(s1, s2);
:在字符串s1
中查找字符串s2
的第一次出现。strchr(s1, c);
:在字符串s1
中查找字符c
的第一次出现。strrchr(s1, c);
:在字符串s1
中查找字符c
的最后一次出现。
字符串长度
strlen(s);
:计算字符串s
的长度,不包括终止的 null 字符。
其他函数
memset(s, c, n);
:将s
的前n
个字符设置为字符c
。memcpy(s1, s2, n);
:从s2
复制n
个字符到s1
。memmove(s1, s2, n);
:从s2
复制n
个字符到s1
,即使源地址和目标地址重叠也是安全的。
使用注意事项
- 使用
strcpy
、strcat
等函数时,需要确保目标字符串有足够的空间来存储结果,以避免缓冲区溢出。 strlen
函数计算的是字符串的实际长度,不包括终止的 null 字符。<string.h>
中的函数都是对 null 结尾的字符串进行操作的,如果处理的不是 null 结尾的字符串,需要使用mem*
类函数。
示例代码
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[] = " World";
char str3[40];
strcpy(str3, str1);
strcat(str3, str2);
printf("str3: %s\n", str3);
printf("Length of str3: %zu\n", strlen(str3));
return 0;
}
输出:
str3: Hello World
Length of str3: 11
总结
<string.h>
是 C 语言中处理字符串的重要工具,提供了丰富的函数来简化字符串操作。在使用这些函数时,需要注意字符串的长度和目标缓冲区的大小,以避免潜在的安全问题。