码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • strcmp · strn** | 使用场景与模拟实现


    在这里插入图片描述
    啊我摔倒了..有没有人扶我起来学习....


    👱个人主页: 《 C G o d 的个人主页》 \color{Darkorange}{《CGod的个人主页》} 《CGod的个人主页》交个朋友叭~
    💒个人社区: 《编程成神技术交流社区》 \color{Darkorange}{《编程成神技术交流社区》} 《编程成神技术交流社区》加入我们,一起高效学习,收割好Offer叭~
    🌱刷题链接: 《 L e e t C o d e 》 \color{Darkorange}{《LeetCode》} 《LeetCode》快速成长的渠道哦~


    目录

    • 前言
    • 一、strcmp
      • 1.1 strcmp使用场景
      • 1.2 strcmp模拟实现
    • 二、strncpy
    • 三、strncat
    • 四、strncmp


    前言

    • C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中
    • 字符串常量适用于那些对它不做修改的字符串函数

    一、strcmp

    1.1 strcmp使用场景

    int strcmp ( const char * str1, const char * str2 );
    
    • 1
    • 第一个字符串大于第二个字符串,则返回大于0的数字
    • 第一个字符串等于第二个字符串,则返回0
    • 第一个字符串小于第二个字符串,则返回小于0的数字
    • 那么如何判断两个字符串?
      • 从首字符依次对比,对比的是相应的ASCII码值

    1.2 strcmp模拟实现

    参考代码:

    int my_strcmp(const char* src, const char* dst) 
    {
    	int ret = 0;
    	assert(src != NULL);
    	assert(dest != NULL);
    	while (!(ret = *(unsigned char*)src - *(unsigned char*)dst) && *dst)
    		++src, ++dst;
    	if (ret < 0)
    		ret = -1;
    	else if (ret > 0)
    		ret = 1;
    	return(ret);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    二、strncpy

    char * strncpy ( char * destination, const char * source, size_t num );
    
    • 1
    • 拷贝num个字符从源字符串到目标空间。
    • 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个

    三、strncat

    char * strncat ( char * destination, const char * source, size_t num );
    
    • 1
    • 与strncpy对strcpy的改进一样,strncat也是对strcat的改进,而且可以自我追加
    • 参数和strncpy无异
    #include 
    #include 
    int main()
    {
    	char str1[20];
    	char str2[20];
    	strcpy(str1, "To be ");
    	strcpy(str2, "or not to be");
    	strncat(str1, str2, 6);
    	puts(str1);
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    输出结果:在这里插入图片描述

    四、strncmp

    int strncmp ( const char * str1, const char * str2, size_t num );
    
    • 1
    • 比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完
    • 也是对strcmp的改进
    #include 
    #include 
    int main()
    {
    	char str[][5] = { "R2D2" , "C3PO" , "R2A6" };
    	int n;
    	puts("Looking for R2 astromech droids...");
    	for (n = 0; n < 3; n++)
    		if (strncmp(str[n], "R2xx", 2) == 0)
    		{
    			printf("found %s\n", str[n]);
    		}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    输出结果:在这里插入图片描述


    在这里插入图片描述

  • 相关阅读:
    【自动化持续集成必备基础】pipeline常用功能
    黑莓手机时代落幕;阿里巴巴为 Linux 内核调度器提出新概念;清理 Linux 内核“依赖地狱” | 开源日报
    STM32介绍和资料地址
    CSS前端入门(第二天)选择器
    Maven第一章:Maven安装、验证、使用
    ES查询数据的时报错:circuit_breaking_exception[[parent] Data too large
    二叉树的后序遍历-力扣
    简于外 强于内,联想全新ThinkCentre M90a Pro Gen4以强劲性能开启商
    华为vrrp+mstp+dhcp配置案例
    常用注解@JsonField、@JsonFormat、@DateTimeFormat区别
  • 原文地址:https://blog.csdn.net/m0_64332384/article/details/127666980
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号