目录
1. 字符串复制与连接函数
-
strcpy(char *dest, const char *src)
- 复制
src
字符串到dest
中,包括终止符\0
。
- 复制
-
strncpy(char *dest, const char *src, size_t n)
- 复制
src
的前n
个字符到dest
中,不足n
个字符的部分用\0
填充。
- 复制
-
strcat(char *dest, const char *src)
- 将
src
字符串追加到dest
字符串的末尾。
- 将
-
strncat(char *dest, const char *src, size_t n)
- 将
src
的前n
个字符追加到dest
的末尾。
- 将
2. 字符串比较
-
strcmp(const char *str1, const char *str2)
- 比较
str1
和str2
。返回值小于 0 表示str1
小于str2
,等于 0 表示相等,大于 0 表示str1
大于str2
。
- 比较
-
strncmp(const char *str1, const char *str2, size_t n)
- 比较
str1
和str2
的前n
个字符。
- 比较
3. 字符串查找
-
strchr(const char *str, int c)
- 查找
str
中首次出现的字符c
。返回指向该字符的指针,如果未找到则返回NULL
。
- 查找
-
strrchr(const char *str, int c)
- 查找
str
中最后一次出现的字符c
。返回指向该字符的指针,如果未找到则返回NULL
。
- 查找
-
strstr(const char *haystack, const char *needle)
- 查找
haystack
中首次出现needle
的位置。返回指向needle
首次出现位置的指针,如果未找到则返回NULL
。
- 查找
4. 字符串分割与替换
strtok(char *str, const char *delim)
- 将
str
按delim
中的字符分割成多个子字符串,返回指向第一个子字符串的指针。连续调用以获取所有子字符串。
- 将
5. 字符串长度与填充
-
strlen(const char *str)
- 计算字符串
str
的长度(不包括终止符\0
)。
- 计算字符串
-
strspn(const char *str1, const char *str2)
- 计算
str1
开头连续包含str2
中字符的长度。
- 计算
-
strcspn(const char *str1, const char *str2)
- 计算
str1
开头直到首次出现str2
中字符的长度。
- 计算
-
strpbrk(const char *str1, const char *str2)
- 查找
str1
中首次出现str2
中任何字符的位置。返回指向该字符的指针,如果未找到则返回NULL
。
- 查找
6. 字符串填充与转换
-
sprintf(char *str, const char *format, ...)
- 格式化字符串并将结果写入
str
中。
- 格式化字符串并将结果写入
-
sscanf(const char *str, const char *format, ...)
- 从
str
中读取格式化的数据。
- 从
7. 内存操作
-
memcpy(void *dest, const void *src, size_t n)
- 从
src
拷贝n
字节到dest
中。
- 从
-
memmove(void *dest, const void *src, size_t n)
- 从
src
移动n
字节到dest
中,处理重叠区域时更安全。
- 从
-
memset(void *str, int c, size_t n)
- 将
str
中的前n
字节设置为c
。
- 将
8. 字符串转化
-
atoi(const char *str)
- 将字符串
str
转换为int
类型。
- 将字符串
-
atol(const char *str)
- 将字符串
str
转换为long
类型。
- 将字符串
-
atoll(const char *str)
- 将字符串
str
转换为long long
类型。
- 将字符串
-
itoa(int value, char *str, int base)
- 将
value
转换为字符串,使用指定的进制表示。这个函数是非标准的,通常需要在某些实现中或者使用自定义实现。
- 将
部分代码展示
#include <stdio.h>
#include <string.h>
int main() {
// 初始化字符串
char str1[50] = "Hello, ";
char str2[] = "World!";
char str3[50];
char *searchResult;
char str4[] = "are,you,ok";
char delimiters[] = ",";
char *token;
// 字符串复制
strcpy(str3, str2);
printf("str3被覆盖为str2 : %s\n", str3);
// 字符串连接
strcat(str1, str2);
printf("str2被拼接到str1: %s\n", str1);
// 字符串长度
printf("str1的长度: %d\n", strlen(str1));
// 字符串比较
int n = strcmp(str1, str3);
if (n == 0) {
printf("str1 == str3\n");
} else if (n > 0) {
printf("str1 >= str3\n");
} else {
printf("str1 <= str3\n");
}
// 查找字符
searchResult = strchr(str1, 'W');
if (searchResult) {
printf("'W'在%s被找到\n", searchResult);
} else {
printf("'W'没有在str1被找到\n");
}
// 查找子字符串
searchResult = strstr(str1, "World");
if (searchResult) {
printf("'World'在%s被找到\n", searchResult);
} else {
printf("'World'没有在str1被找到\n");
}
// 字符串分割
token = strtok(str4, delimiters);//delimiters为"分隔符"
while (token != NULL) {
printf("Token: %s\n", token);
token = strtok(NULL, delimiters); // 获取下一个token
}
// 字符串填充
memset(str1+1, '*', sizeof(str1) - 1);
str1[sizeof(str1) - 1] = '\0'; // 确保字符串以 '\0' 结尾
printf("str1: %s\n", str1);
return 0;
}