以下是 C 标准库中常用字符串操作函数的详细说明:
1. strlen
size_t strlen(const char *str);
- 功能:计算字符串长度(不包括结尾的空字符
\0)。 - 参数:
str:指向以 null 结尾的字符串的指针。
- 返回值:
- 返回字符串
str的长度(类型为size_t),即第一个空字符\0前的字符数。
- 返回字符串
2. strcpy
char *strcpy(char *dest, const char *src);
- 功能:将
src字符串复制到dest中(包括结尾的\0)。 - 参数:
dest:目标缓冲区,用于存储复制后的字符串。src:源字符串,必须是 null 结尾。
- 返回值:
- 返回指向
dest的指针。
- 返回指向
⚠️ 注意:
dest必须足够大以容纳src的内容,否则会导致缓冲区溢出。更安全的替代是strncpy()。
3. strncpy
char *strncpy(char *dest, const char *src, size_t n);
- 功能:最多复制
n个字符从src到dest。 - 参数:
dest:目标缓冲区。src:源字符串。n:要复制的最大字符数。
- 返回值:
- 返回指向
dest的指针。
- 返回指向
- 注意:
- 如果
src的长度小于n,则会在dest后面填充空字符\0直到总长度为n。 - 如果
src长度大于等于n,则dest不会被自动添加终止符\0。
- 如果
4. strcat
char *strcat(char *dest, const char *src);
- 功能:将
src追加到dest的末尾。 - 参数:
dest:目标字符串,必须是 null 结尾,并且有足够空间容纳追加的内容。src:源字符串,被追加到dest。
- 返回值:
- 返回指向
dest的指针。
- 返回指向
⚠️ 注意:使用时容易造成缓冲区溢出。更安全的替代是
strncat()。
5. strncat
char *strncat(char *dest, const char *src, size_t n);
- 功能:最多将
src的前n个字符追加到dest的末尾,并在最后加上终止符\0。 - 参数:
dest:目标字符串。src:源字符串。n:要追加的最大字符数。
- 返回值:
- 返回指向
dest的指针。
- 返回指向
6. strcmp
int strcmp(const char *s1, const char *s2);
- 功能:按字典顺序比较两个字符串。
- 参数:
s1和s2:待比较的两个字符串。
- 返回值:
- 小于 0:如果
s1在字典上小于s2。 - 等于 0:如果
s1等于s2。 - 大于 0:如果
s1在字典上大于s2。
- 小于 0:如果
7. strncmp
int strncmp(const char *s1, const char *s2, size_t n);
- 功能:比较两个字符串的前
n个字符。 - 参数:
s1和s2:待比较的两个字符串。n:要比较的最大字符数。
- 返回值:
- 同
strcmp,但只比较前n个字符。
- 同
8. strstr
char *strstr(const char *haystack, const char *needle);
- 功能:查找子字符串
needle在haystack中首次出现的位置。 - 参数:
haystack:主字符串。needle:要查找的子字符串。
- 返回值:
- 成功:返回指向第一次出现子串起始位置的指针。
- 失败:返回
NULL。
9. strchr
char *strchr(const char *str, int c);
- 功能:查找字符
c在字符串str中首次出现的位置。 - 参数:
str:字符串。c:要查找的字符(通常传入char类型,但函数接受int)。
- 返回值:
- 成功:返回指向该字符的指针。
- 失败:返回
NULL。
10. strrchr
char *strrchr(const char *str, int c);
- 功能:查找字符
c在字符串str中最后一次出现的位置。 - 参数:
str:字符串。c:要查找的字符。
- 返回值:
- 成功:返回指向该字符最后一次出现的指针。
- 失败:返回
NULL。
11. strdup
char *strdup(const char *s);
- 功能:复制字符串
s并动态分配内存保存副本。 - 参数:
s:原始字符串。
- 返回值:
- 成功:返回新分配的字符串副本指针(需用
free()释放)。 - 失败:返回
NULL。
- 成功:返回新分配的字符串副本指针(需用
⚠️ 注意:不是 ANSI C 标准的一部分,但在 POSIX 和 GNU 编译器中广泛支持。
12. strtok
char *strtok(char *str, const char *delim);
- 功能:将字符串
str按照分隔符delim分割成多个 token。 - 参数:
str:初始字符串(第一次调用传入;后续传入 NULL)。delim:包含所有作为分隔符的字符。
- 返回值:
- 每次调用返回一个 token 指针,没有更多 token 时返回
NULL。
- 每次调用返回一个 token 指针,没有更多 token 时返回
⚠️ 注意:此函数会修改原字符串,插入
\0来分割 token。
1352

被折叠的 条评论
为什么被折叠?



