• C语言:字符串函数(2)


    strcmp:(字符串比较)

    #include

    int strcmp(const char* str1, const char* str2);

    标准规定:
    第一个字符串大于第二个字符串,则返回大于0的数字0
    第一个字符串等于第二个字符串,则返回0
    第一个字符串小于第二个字符串,则返回小于0的数字
    那么如何判断两个字符串? 答:比较的是两个字符串的首字母谁更大,如果一样则比较下一个

    模拟实现自己的strcmp函数

    int my_strcmp(const char*str1,const char*str2)
    {
        assert(str1&&str2);//str1和str2都不能为空指针
        while(*str1==*str2)
        {
            if(*str1=='\0')
            {
                return 0;//两个字符串都比到\0了,相等
            }
            str1++;
            str2++;
        }
        if(*str1>*str2)
            return 1;//大于
        else
            return -1;//小于
    }
    
    char*p1="abcde";
    char*p2="acbde";
    int ret=my_strcmp(p1,p2);
    printf("%d\n",ret);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    strncmp:
    (受长度限制的字符串比较,第三个参数为比较字符的个数)

    #include

    int strncmp(const char * str1, const char * str2, size_t num);

    我们一般查文档时,看到如下两种null代表两种不同的意思
    NULL – 空指针
    Null或者NUL – \0

    strstr:(查找字符串)

    #include

    char * strstr(const char*, const char*);

    找到对应字符串的地址,并将其打印出来。

    模拟实现自己的strstr函数:

    char*my_strstr(char*p1,char*p2)
    {
        assert(p1!=NULL);
        assert(p2!=NULL);
        //先把p1,p2地址用其他变量存起来
        char*s1=p1;
        char*s2=p2;
        char*cur=p1;
        //空字符串是任何一个字符串的子串
        //空字符串也是有地址的,不等于空指针
        //空指针是指不指向任何字符串的指针,而空字符串也是字符串哦
        if(*p2=='\0')//若查找的字符串是空字符串
        {
            return p1;
        }
        while(*cur)
        {
            s1=cur;
            s2=p2;
            while((*s1!='\0')&&(*s2!='\0')&&(*s1==*s2))
            {
                s1++;
                s2++;
            }
            if(*s2=='\0')
            {
                return cur;//找到子串
            }
            cur++;
        }
        return NULL;//找不到子串
    }
    
    char*a="abbbcde";
    char*b="bbc";
    char*c=my_strstr(a,b);
    printf("%s\n",c);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    strerror:获取指向错误消息字符串的指针

    #include
    #include

    char * strerror (int errnum);

    strerror用来依参数errnum 的错误代码来查询其错误原因的描述字符串, 然后将该字符串指针返回.
    返回值:返回值为char*类型,返回描述错误原因的字符串指针.

    实例:

    #include 
    #include 
    #include 
    
    int main ()
    {
       FILE *fp;
       fp = fopen("file.txt","r");
       if( fp == NULL ) 
       {
          printf("Error: %s\n", strerror(errno));
       }
       
      return(0);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    让我们编译并运行上面的程序,这将产生以下结果,因为我们尝试打开一个不存在的文件:

    Error: No such file or directory
    
    • 1

    意思是没有这样的文件

  • 相关阅读:
    HTML入门零基础教程(五)
    【千方百计】更改绑定的数据对象数值后,DOM重新渲染的4种方法
    04 【nodejs模块化规范:CommonJS】
    【ROS】ros-noetic和anaconda联合使用【教程】
    HackTheBox Behind The Scenes 逆向题目分析
    Kotlin高仿微信-第57篇-VIP管理列表
    spring:详解spring MVC
    #循循渐进学51单片机#IIC总线与EEPROM#not.13
    springcloud失物招领网站源码
    计算机网络---万维网(WWW)
  • 原文地址:https://blog.csdn.net/qq_57430594/article/details/128112436