C语言学,标准库 <string.h>
<string.h>
是 C 标准库中的一个头文件,它包含了一系列用于处理 C 字符串(以空字符 \0
结尾的字符数组)的函数。这些函数提供了字符串的复制、比较、连接、搜索、长度计算等功能。
<string.h>
常用函数说明:
字符串长度计算
size_t strlen(const char *str);
计算字符串 str 的长度(不包括终止的空字符)。
字符串复制
char *strcpy(char *dest, const char *src);
将字符串 src 复制到字符串 dest。
char *strncpy(char *dest, const char *src, size_t n);
将最多 n 个字符从字符串 src 复制到字符串 dest。如果 src 的长度小于 n,则在 dest 的剩余部分填充空字符。
字符串连接
char *strcat(char *dest, const char *src);
将字符串 src 连接到字符串 dest 的末尾。
char *strncat(char *dest, const char *src, size_t n);
将最多 n 个字符从字符串 src 连接到字符串 dest 的末尾。
字符串比较
int strcmp(const char *str1, const char *str2);
比较字符串 str1 和 str2。返回值小于、等于或大于 0 分别表示 str1 小于、等于或大于 str2。
int strncmp(const char *str1, const char *str2, size_t n);
比较最多 n 个字符的字符串 str1 和 str2。
字符串搜索
char *strchr(const char *str, int c);
在字符串 str 中搜索字符 c 的第一次出现。
char *strrchr(const char *str, int c);
在字符串 str 中搜索字符 c 的最后一次出现。
char *strstr(const char *str1, const char *str2);
在字符串 str1 中搜索字符串 str2 的第一次出现。
字符串分割
char *strtok(char *str, const char *delim);
用分隔符 delim 分割字符串 str。该函数会修改 str,并返回一个指向第一个标记的指针。
char *strtok_r(char *str, const char *delim, char **saveptr);
与 strtok 类似,但线程安全,使用 saveptr 保存状态。
字符串错误处理
void strerror(int errnum, char *buf, size_t buflen);
将错误号 errnum 转换为对应的错误信息字符串,并存储在 buf 中。注意:这是 POSIX 标准的一部分,可能不在所有 C 标准库中可用。
内存设置和比较
void *memset(void *s, int c, size_t n);
将内存块 s 的前 n 个字节设置为字符 c(转换为无符号字符)。
int memcmp(const void *s1, const void *s2, size_t n);
比较内存块 s1 和 s2 的前 n 个字节。
示例1:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if (result == 0) {
printf("Strings are equal\n");
} else {
printf("Strings are not equal\n");
}
return 0;
}
示例2:
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "Hello, World!";
char dest[50];
strcpy(dest, src);
printf("Copied string: %s\n", dest);
return 0;
}