第5章 C语言的字符串函数strlen strcmp (八)

发布于:2023-01-04 ⋅ 阅读:(338) ⋅ 点赞:(0)

文档视频讲解链接地址

  1. 腾讯课堂链接 : 47_数组_字符串函数strcmp
  2. 腾讯课堂链接 : 48_数组_字符串函数strncmp与strlen
  3. 腾讯课堂链接 : 49_数组_数组小节复习

5.8 字符串函数strlen,strcmp,strncmp

  1. strcmp函数- 字符串比较函数

    • 格式:strcmp(字符串1,字符串2)
    • 功能:比较两个字符串
    • 比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
    • 返回值:返回int型整数,
      • 若字符串1< 字符串2, 返回负整数
      • 若字符串1> 字符串2, 返回正整数
      • 若字符串1== 字符串2, 返回零
    • 说明:字符串比较不能用“==”,必须用strcmp
  2. 实例65
    使用strcmp函数比较两个字符串的大小关系。

    • 源文件
    01-cbase\65-strcmp.c
    
    • 源代码
    #include <stdio.h> 
    #include <string.h>
    
    int main(int argc, char const *argv[])
    {
        char str1[100]={0},str2[50]={0}; 
        int ret ; 
        printf("请输入第1个字符串 >:") ; 
        scanf("%s",str1);
        printf("请输入第2个字符串 >:");
        scanf("%s",str2);
        printf("str1=%s\n",str1); 
        printf("str2=%s\n",str2); 
        ret = strcmp(str1,str2) ; 
        if(ret < 0) // str1 < str2
        {
            printf("%s < %s",str1,str2); 
        }
        else if(ret > 0) // str1 > str2 
        {
            printf("%s > %s",str1,str2); 
        }
        else 
        {
            printf("%s == %s",str1,str2); 
        }
        return 0;
    }
    
    
    • 运行结果
    // 第1次输入
    请输入第1个字符串 >:goodbye
    请输入第2个字符串 >:goodbya
    str1=goodbye
    str2=goodbya
    goodbye > goodbya
    // 第2次输入:
    请输入第1个字符串 >:godobye
    请输入第2个字符串 >:goodbye
    str1=godobye
    str2=goodbye
    godobye < goodbye
    // 第2次输入:
    请输入第1个字符串 >:goodbye
    请输入第2个字符串 >:goodbye
    str1=goodbye
    str2=goodbye
    goodbye == goodbye
    
  3. 实例66

    使用strcmp函数对输入的数据进行识别

    • 源文件
    01-cbase\66-strcmp.c
    
    • 源代码
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char const *argv[])
    {
        char str1[100] = {0};
        printf("请输入你的选择(yes/no) >:");
        scanf("%s", str1);
        printf("str1=%s\n", str1);
        if (strcmp(str1, "yes") == 0) // 表示用户输入的 yes
        {
            printf("你的选择是:yes\n");
        }
        else if (strcmp(str1, "no") == 0) // 表示用户输入的 no
        {
            printf("你的选择是:no\n");
        }
        else
        {
            printf("你的输入有误,请重新输入\n");
        }
    
        return 0;
    }
    
    
    • 运行结果
    // 第一次
    请输入你的选择(yes/no) >:yes
    你的选择是:yes
    // 第二次 
    请输入你的选择(yes/no) >:no
    你的选择是:no
    // 第三次
    请输入你的选择(yes/no) >:haha
    你的输入有误,请重新输入
    
  4. 实例67

    编程使用自己的代码实现strcmp函数实的比较功能, 不能使用strcmp函数。

    提示: 使用while循环, 从左往右逐个比较字符。遇到 '\0’或不等于0是停止比较

    • 源文件
    01-cbase\67-mystrcmp.c
    
    • 源代码
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char const *argv[])
    {
        char str1[100] = {0}, str2[50] = {0};
        printf("请输入第1个字符串 >:");
        scanf("%s", str1);
        printf("请输入第2个字符串 >:");
        scanf("%s", str2);
        printf("str1=%s\n", str1);
        printf("str2=%s\n", str2);
        // int ret = strcmp(str1,str2) ; // 比较str1 和str2 的大小关系
        int ret, i = 0;
        while (1)
        {
            ret = str1[i] - str2[i];
            if (ret < 0) // str1 < str2
            {
                printf("%s < %s\n", str1, str2);
                break;
            }
            else if (ret > 0) // str1 > str2
            {
                printf("%s > %s\n", str1, str2);
                break;
            }
            else // str1[i] == str2[i]
            {
                if (str1[i] == '\0') // 表示 str1[i] == str2[i] == '\0' , 两个字符串已经相等
                {
                    printf("%s == %s\n", str1, str2);
                    break;
                }
                i++ ; // 往后移动 
            }
        }
        return 0;
    }
    
    
    • 运行结果
    // 第1次输入
    请输入第1个字符串 >:goodbye
    请输入第2个字符串 >:goodbya
    str1=goodbye
    str2=goodbya
    goodbye > goodbya
    // 第2次输入:
    请输入第1个字符串 >:godobye
    请输入第2个字符串 >:goodbye
    str1=godobye
    str2=goodbye
    godobye < goodbye
    // 第2次输入:
    请输入第1个字符串 >:goodbye
    请输入第2个字符串 >:goodbye
    str1=goodbye
    str2=goodbye
    goodbye == goodbye
    
  5. strlen函数- 计算字符串长度函数

    • 格式:strlen(字符数组名)

    • 功能:计算字符串长度,遇到‘\0’停止

    • 返值:返回字符串实际长度,不包括‘\0’在内

    • 例如:

    • 11

      • 答案: 1 3 1
  6. 实例68
    输入一个字符串使用strlen函数计算字符串的长度 。

    • 源文件
    01-cbase\68-strlen.c
    
    • 源代码
    #include <stdio.h>  
    #include <string.h>
    
    
    int main(int argc, char const *argv[])
    {
        char s1[10] = {'A','\0','B','C','\0','D'} ; 
        char s2[] = "\t\v\\\0will\n" ;  // \t  , \v  , \\ , \0 是字符串结束标志 
        char s3[] = "\x69\082\n" ;  // \x69 是0x69的写法  \082 , 系统会把\0 当做一个字符 
    
        printf("strlen(s1)=%d\n",strlen(s1));
        printf("strlen(s2)=%d\n",strlen(s2));
        printf("strlen(s3)=%d\n",strlen(s3));
        printf("s3[0]=%#x\n",s3[0]); // \x69
        printf("s3[1]=%#x\n",s3[1]); // \0
        return 0;
    }
    
    
    • 运行结果
    strlen(s1)=1
    strlen(s2)=3
    strlen(s3)=1
    s3[0]=0x69
    s3[1]=0
    
  7. 实例69

    编程使用自己的代码实现strlen函数实的功能, 不能使用strlen函数。

    • 源文件
    01-cbase\69-mystrlen.c
    
    • 源代码
    #include <stdio.h>  
    #include <string.h>
    
    
    int main(int argc, char const *argv[])
    {
        char str[100]={0};
        printf("请输入一个字符串 >:"); 
        scanf("%s",str);
        printf("str=%s\n",str); 
        // mystrlen 
        int len = 0 ; 
        // str[len] 的字符不等于 '\0' , 说明字符串没有结束, 需要继续移动
        // str[len] 的字符等于 '\0' , 说明字符串结束, 需要结束计数  , len 的值就是字符串长度 
        while(str[len] != '\0') 
        {
            len ++ ; 
        } 
        
        printf("len=%d\n",len); // len 就是字符串的长度 
        return 0;
    }
    
    
    • 运行结果
    请输入一个字符串 >:helloworld
    str=helloworld
    len=10
    
  8. strncmp 函数

    • 格式:strncmp (字符数组名)
    int strncmp(const char *s1, const char *s2, size_t n);
    
    • 功能:比较两个字符串前n个字符,
    • 比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
    • 返回值:返回int型整数,
      • 若字符串1< 字符串2, 返回负整数
      • 若字符串1> 字符串2, 返回正整数
      • 若字符串1== 字符串2, 返回零
    • 说明:字符串比较不能用“==”,必须用strcmp
  9. 实例70

    使用strncmp函数比较输入选项是yes/no

    • 源文件
    01-cbase\70-strncmp.c
    
    • 源代码
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char const *argv[])
    {
        char str1[100] = {0};
        printf("请输入你的选择(yes/no) >:");
        scanf("%s", str1);
        printf("str1=%s\n", str1);
        if (strncmp(str1, "yes",1) == 0) // 表示用户输入的 yes
        {
            printf("你的选择是:yes\n");
        }
        else if (strncmp(str1, "no",1) == 0) // 表示用户输入的 no
        {
            printf("你的选择是:no\n");
        }
        else
        {
            printf("你的输入有误,请重新输入\n");
        }
    
        return 0;
    }
    
    
    • 运行结果
    // 第一次
    请输入你的选择(yes/no) >:yes
    str1=yes
    你的选择是:yes
    
    // 第二次 
    请输入你的选择(yes/no) >:no
    str1=no
    你的选择是:no
    
    // 第三次    
    请输入你的选择(yes/no) >:y
    str1=y
    你的选择是:yes
        
    //第四次 
    请输入你的选择(yes/no) >:n
    str1=n
    你的选择是:no
    
    //第五次     
    请输入你的选择(yes/no) >:u
    str1=u
    你的输入有误,请重新输入
    
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到