在C语言中,字符串操作主要依赖于标准库 <string.h>
中的函数。以下是一些常用的字符串操作方法:
- 字符串长度
strlen(const char *str)
: 返回字符串str
的长度(不包括终止的 null 字符)。
- 字符串复制
strcpy(char *dest, const char *src)
: 将字符串src
复制到dest
。strncpy(char *dest, const char *src, size_t n)
: 将字符串src
的前n
个字符复制到dest
。如果src
的长度小于n
,则dest
的剩余部分将被填充为 null 字符。
- 字符串连接
strcat(char *dest, const char *src)
: 将字符串src
连接到dest
的末尾。strncat(char *dest, const char *src, size_t n)
: 将字符串src
的前n
个字符连接到dest
的末尾。
- 字符串比较
strcmp(const char *str1, const char *str2)
: 比较str1
和str2
。如果str1
<str2
,返回负值;如果str1
==str2
,返回0;如果str1
>str2
,返回正值。strncmp(const char *str1, const char *str2, size_t n)
: 比较str1
和str2
的前n
个字符。
- 字符串查找
strchr(const char *str, int c)
: 在str
中查找字符c
的第一次出现,并返回指向该字符的指针。如果未找到,则返回 NULL。strrchr(const char *str, int c)
: 在str
中查找字符c
的最后一次出现,并返回指向该字符的指针。如果未找到,则返回 NULL。strstr(const char *str1, const char *str2)
: 在str1
中查找str2
的第一次出现,并返回指向str1
中该位置的指针。如果未找到,则返回 NULL。
- 字符串分割
strtok(char *str, const char *delim)
: 使用delim
中的字符来分割str
,并返回指向第一个子字符串的指针。这个函数通常用于循环中,以获取后续的子字符串。
- 字符串大小写转换
tolower(int c)
: 将字符c
转换为小写(如果它是一个大写字母)。toupper(int c)
: 将字符c
转换为大写(如果它是一个小写字母)。
- 字符串内存分配
strdup(const char *str)
: 分配足够的内存来复制str
,并返回指向新字符串的指针。如果内存分配失败,则返回 NULL。
- 字符串格式化
sprintf(char *str, const char *format, ...)
: 将格式化的数据写入str
。snprintf(char *str, size_t size, const char *format, ...)
: 将格式化的数据写入str
,但不超过size
个字符。这可以防止缓冲区溢出。
- 字符串反转
- 标准库中并没有直接提供字符串反转的函数,但你可以自己实现或使用第三方库。
请注意,由于C语言中的字符串是以 null 结尾的字符数组,因此所有的字符串操作都需要注意避免缓冲区溢出和未定义的字符串。使用 strncpy
、strncat
和 snprintf
等函数可以帮助减少这种风险。