C语言字符串函数(带图文,建议收藏)

本文详细介绍了C语言中常用的字符串函数,包括strchr、strrchr、strstr、strlen、strcpy、strncpy、strcmp、strncmp、strcat、strncat和strtok,帮助开发者理解和记忆这些在项目开发中常见的字符串处理函数及其用法和注意事项。
摘要由CSDN通过智能技术生成

目录

前言

一、函数strchr与strrchr

二、函数strstr

三、函数strlen 

四、函数strcpy与strncpy 

五、函数strcmp与strncmp 

六、函数strcat与strncat 

七、函数strtok 


前言

最近在做公司的项目发现字符串函数在开发中使用频率非常高所以今天写下这篇文章加深自己的记忆,并且带同学们熟悉一下常用的字符串函数有哪些。

一、函数strchr与strrchr

注意:

        1、这两个函数的功能,都是在指定的字符串 s 中,试图找到字符 c。

        2、strchr() 从左往右找,strrchr() 从右往左找。

        3、字符串结束标记 ‘\0’ 被认为是字符串的一部分。

示例:

        char *p;

        p = strchr("www.qq.com", '.');     // 从左到右找到第一个出现的字符'.'

        printf("%s\n", p);                         // 输出 ".qq.com"

        p = strrchr("www.qq.com", '.');    // 从右到左找到第一个出现的字符'.'

        printf("%s\n", p);                         // 输出 ".com"

 二、函数strstr

示例:

        char *s = "abcd.txt";

        char *p = strstr(s, ".wps");

        if(p == NULL)

        {

                printf("文件[%s]不是WPS文件\n", s);

        }

        else

        {

                printf("文件[%s]是WPS文件\n", s);

        }

三、函数strlen 

示例:

        char *s = "www.baidu.com";

        printf("百度官网地址的长度是:%d\n", strlen(s));

四、函数strcpy与strncpy 

注意:

        1、复制src字符串的时候,也会将'\0',一并复制到dest中。

        2、这两个函数的功能,都是将 src 中的字符串,复制到 dest 中。

        3、strcpy() 没有边界控制,因此可能会由于 src 的过长而导致内存溢出。

        4、strncpy()有边界控制,最多复制 n+1 个字符(其中最后一个是 ‘\0’ )到 dest 中。

        5、strncpy()是具备边界检查的安全版本,推荐使用。

示例:

        char s1[5] = "abc";

        strcpy(s1, "xyz);

        printf("%s\n", s1); // 输出 "xyz",原有的"abc"被覆盖

        char s2[5] = "abc";

        strcpy(s2, "123456789"); // 此处操作内存溢出,可能会发生内存崩溃 

示例:

        char s[5] = "abc";

        strncpy(s, "123456789", sizeof(s)-1);

        printf("%s\n", s); // 输出 "1234",有边界保护,不会溢出 

五、函数strcmp与strncmp 

 注意:

        1、比较字符串大小,实际上比较的是字符的 ASCII码值的大小。

        2、从左到右逐个比较两个字符串的每一个字符,当能“决出胜负”时立刻停止比较。

示例:

        printf("%d\n", strcmp("abc", "abc")); // 输出0,两个字符串相等

        printf("%d\n", strcmp("abc", "aBc")); // 输出1,"abc" 大于 "aBc"

        printf("%d\n", strcmp("999", "aaa")); // 输出-1,"999" 小于 "aaa" 

六、函数strcat与strncat 

注意:

     1、这两个函数的功能,都是将 src 中的字符串,复制拼接到 dest 的末尾。

     2、strcat() 没有边界控制,因此可能会由于 src 的过长而导致内存溢出。

     3、strncat() 有边界控制,最多复制 n+1 个字符(其中最后一个是 ‘\0’ )到 dest 的末尾。

     4、strncat() 是具备边界检查的安全版本,推荐使用。

示例:

        char s1[10] = "abc";

        strcat(s1, "xyz");

        printf("%s\n", s1); // 输出 "abcxyz"

        char s2[10] = "abc";

        strcat(s2, "123456789"); // 此处操作内存溢出,可能会发生内存崩溃

        char s[10] = "abc";

        strncat(s, "123456789", sizeof(s)-strlen(s)-1);

        printf("%s\n", s); // 输出 "abc123456",两个字符串被拼接到了一起,且不会溢出 

 七、函数strtok 

注意:

        1、该函数会将改变原始字符串 str,使其所包含的所有分隔符变成结束标记 ‘\0’ 。

        2、由于该函数需要更改字符串 str,因此 str 指向的内存必须是可写的。

        3、首次调用时 str 指向原始字符串,此后每次调用 str 用 NULL 代替。

示例:

char s[20] = "www.yueqian.com.cn";

char *p = strtok(s, "."); // 首次调用时,s 指向需要分割的字符串

while(p != NULL)

{

        printf("%s\n", p);

        p = strtok(NULL, "."); // 此后每次调用,均使用 NULL 代替。

注:上述代码的运行结果就是将字符串 s 拆解为"www"、“yueqian”、“com” 和 “cn”

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不吃辣。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值