C语言常用字符串库函数详解

{"title":"C语言常用字符串函数详解","content":"

在日常写C程序时,处理字符串是家常便饭。比如读取用户输入的姓名、拼接文件路径、判断密码是否正确,都离不开对字符串的操作。C语言本身没有内置字符串类型,而是用字符数组来表示,这时候就得靠标准库里的字符串函数来帮忙。

\n\n

strcpy 和 strncpy:字符串复制

\n

把一个字符串内容拷贝到另一个字符数组里,最常用的就是 strcpy。比如你有个缓冲区要存用户输入的名字,就可以这样复制:

\n
#include <stdio.h>\n#include <string.h>\n\nint main() {\n    char name[50];\n    strcpy(name, \"小明\");\n    printf(\"你好,%s\\n\", name);\n    return 0;\n}
\n\n

strcpy 不检查目标空间大小,容易溢出。更安全的做法是用 strncpy,可以指定最多复制多少个字符。

\n\n

strcat 和 strncat:字符串拼接

\n

要把两个字符串连起来,比如生成日志信息或构造路径,可以用 strcat。假设你要把目录和文件名拼成完整路径:

\n
char path[100] = \"/home/user/\";
strcat(path, \"config.txt\");
printf(\"路径:%s\\n\", path);
\n\n

同样地,strncat 能限制追加长度,避免数组越界。

\n\n

strcmp 和 strncmp:字符串比较

\n

判断两个字符串是否相等,不能用 ==,得用 strcmp。它返回0表示相同。比如验证密码:

\n
if (strcmp(password, \"123456\") == 0) {\n    printf(\"登录成功\\n\");\n} else {\n    printf(\"密码错误\\n\");\n}
\n\n

如果只想比前几个字符,比如识别命令开头,strncmp 更合适。

\n\n

strlen:获取字符串长度

\n

想知道一个字符串有几个字符,用 strlen 最直接。比如限制用户名不能超过10个字符:

\n
if (strlen(username) > 10) {\n    printf(\"用户名太长\\n\");\n}
\n\n

注意它不包含末尾的 \\0。

\n\n

strstr:查找子串

\n

在一个大字符串里找关键词,strstr 很实用。比如检查日志行是否包含“error”:

\n
char *log = \"[ERROR] 打开文件失败\";\nif (strstr(log, \"ERROR\")) {\n    printf(\"发现错误信息\\n\");\n}
\n\n

它返回第一次出现的地址,没找到就返回 NULL。

\n\n

strchr:查找单个字符

\n

想找字符串中某个字符的位置,比如提取文件扩展名,可以用 strchr

\n
char *filename = \"report.pdf\";\nchar *dot = strchr(filename, '.');\nif (dot) {\n    printf(\"扩展名:%s\\n\", dot + 1); // 输出 pdf\n}
\n\n

这些函数都在 <string.h> 头文件里,用之前记得包含。

\n\n

实际编程中,光会用还不够,还得注意安全。像 strcpystrcat 这类不检查边界的函数,在处理不可信输入时容易引发漏洞。建议优先使用带 n 限制的版本,或者用更现代的替代方案。

","seo_title":"C语言常用字符串库函数有哪些?一文掌握核心用法","seo_description":"详解C语言中常用的字符串库函数,包括strcpy、strcat、strcmp、strlen、strstr等,结合实际场景讲解用法与注意事项,提升代码安全性与效率。","keywords":"c语言,字符串函数,strcpy,strcat,strcmp,strlen,strstr,strchr,软件配置"}