1) 使用strcmp进行比较

下面通过一个例子进行演示:

#include

#include

int main(void)

{

char* str1 = "abc";

char* str2 = "abc";

if (strcmp(str1, str2) == 0) {

printf("str1和str2相同!\n");

}

else {

printf("str1和str2不相同!\n");

}

return 0;

}

讲解上面的程序:

定义了一个char(字符型)的指针变量str1,并且初始化为 "abc"

定义了一个char(字符型)的指针变量str2,并且初始化为 "abc"

通过strcmp进行比较两个字符串是否相同,如果相同返回0(详细见strcmp百度百科)

?

2) strcmp的实现

int __cdecl strcmp (const char *src, const char *dst)

{

int ret = 0 ;

while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)

{

++src;

++dst;

}

if ( ret < 0 )

ret = -1 ;

else if ( ret > 0 )

ret = 1 ;

return( ret );

}

下面进行讲解:

定义了一个int(整型)的变量ret,并且初始化为0

(unsigned char*) src 表示将src强制转换为unsigned(无符号)的char(字符型)变量 (同理dst)

*(unsigned char*) src 表示获取src中的数据(同理dst)

*(unsigned char*) src - *(unsigned char*)dst,

*(unsigned char*) src表示获取当前src的数据,(假设为"a")

*(unsigned char*)dst表示获取当前dst的数据,(假设为"a")

根据ASCII码表 "a"为65,(ASCII码表)

所以src - dst,所表示的就是 65 - 65,返回结果为0

(ret =*(unsigned char *)src - *(unsigned char *)dst),所以ret 为0

!(ret = *(unsigned char *)src - *(unsigned char *)dst),取反ret

*dst,*dst为获取dst的数据,因为每个字符串的结尾都有一个"\0"(ASCII码表中为0)

判断true和false,其实就是0为false,非0为true,所以可以得出,

如果dst到了字符串末尾,则退出循环

++src,表示将src的指针向后移动一位(同理dst)(如果这里不懂的可以看下面)

下面的if...else if则是根据ret的返回值进行返回对应的数值(详细见strcmp百度百科)

PS :(因为char、unsigned char 都只占一个字符,所以*src也就获取当前src所指向的字符)

?

3)不懂++src的可以看下

++src,表示将src的指针向后移动一位

?

好的,下面进行讲解:

假设当前src的地址为(0x00898b3c),

先说src的类型,当前src的类型为char(字符型),char所占内存大小为1字节,

所以++src后src的地址就变成了(0x00898b3d),

最后通过++src也就能遍历整个src所指向的内存地址中的数据,然后和dst比较

你们是否不懂为什么要++呢?(不懂就继续往下看吧)

首先假设src当前所指向的是 "abc" 的内存地址

当前src为(0x00898b3c),所指向的是"a"

所以*src也就是为"a",(可能你们会疑问为什么是"a")

因为char所占内存大小为1字节,

所以*src获取的数据也就只获取当前src当前所指向的内存地址的一位中的数据,

可以这样理解:

(0x00898b3c)中为"a"

(0x00898b3d)中为"b"

(0x00898b3e)中为"c"

(0x00898b3f)中为"\0"

所以++src就是不断向后移动指针进行遍历"abc"中的每个字符

?

?

?

c语言判断两个字母相等,C语言:比较两个字符串是否相等相关推荐

  1. c语言用数字代表字母,使用c语言判断数字字母

    广告 提供50多种云计算产品,包括云服务器和云. 创建一站式云产品试用服务,以帮助开发人员和企业以零门槛进入云环境. 是用于标识实体的符号. 它用于命名变量名称,函数名称,标签和其他各种用户定义的对象 ...

  2. c语言判断奇数偶数_使用C语言宏检查偶数或奇数

    c语言判断奇数偶数 There are many ways to check whether a given number is EVEN or ODD, which we have already ...

  3. c语言用指针两个字母交换,c语言指针基础之用指针交换两个数(代码实例)

    用指针交换两个数: void swap(int *p,int *q) { int temp; temp = *p; *p = *q; *q = temp; } int main() { int a = ...

  4. c语言怎么比较两个字母大小,C语言strcmp()函数:比较两个字符串的大小

    函数名:  strcmp 头文件: 函数原型:  int strcmp(const char *str1,const char *str2); 功 能:   比较两个字符串的大小,区分大小写 参 数: ...

  5. C语言判断26个字母元音辅音

    #include<stdio.h> int main() {char c;int isupper, islower;//声名大小写字母printf(" 请输入一个大写或小写字母: ...

  6. C语言方向键识别和字母识别,c语言中怎样输入和读取方向键

    在用C语言写出的"贪吃蛇"小游戏中,可以自编以下这个intokey( )函数,用来获取方向键值以便控制蛇的拐弯.库函数kbhit( )是检测是否有按键被按下,Dir是代表方向的变量 ...

  7. C语言前驱和后继字母,数据结构(c语言)3.ppt

    1 第2章 线性表 2.1 线性表的定义及其基本操作 2.2 线性表的顺序存储 2.3 线性表的链式存储 2.4 线性表的存储方式小结 仔佳痴腔慎析沙析增孙丸斌明躬烟议怠鸭顷扣战突邑菩置慰训即檬氨酵涟 ...

  8. c语言判断s1是否大于s2,C语言程序设计_复习资料一.doc

    C语言程序设计_复习资料一 -- <程序设计基础> 院(系) 班级 学号 姓名 试卷卷面成绩占课程考核成绩 %平时 成绩占 %课程考核成绩题号一二三四五六七八九十小计得分 得 分一.单项选 ...

  9. c语言判断文件是否建立成功,C语言编程之怎样判断某一文件是否存在

    很简单的一种办法: #include #include using namespace std; #define FILENAME "stat.dat" int main() { ...

最新文章

  1. 十年磨一剑,可重构计算架构将引领未来芯片市场
  2. python中怎么输出中文-python中使用print输出中文的方法
  3. DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释)、案例应用之详细攻略
  4. 《荣耀战魂》的环境设计制作经验
  5. tp5 日期范围查询_VB实战应用 | 如何巧妙解决日期范围查询问题
  6. 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的美化全攻略
  7. oracle 多个with as
  8. php session 全局,PHP超级全局变量——Session 变量
  9. Linux基础 -- vim编辑器3 -- 查找和替换
  10. EditPlus v2.20 Build 205
  11. js原生获取html的高度,js中怎么获得浏览器的高度?
  12. 代码审查工具Jupiter资料汇总
  13. 大数据主要应用于哪些行业,应用价值是什么?
  14. SATA引脚定义与硬盘电源电压
  15. 计算机作业微波炉工作的原理,微波炉工作电路原理图及功能图解
  16. STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(3):嵌套向量中断控制器
  17. lua attempt to index field ? a nil
  18. 硬盘安装arch linux,ArchLinux硬盘安装
  19. win10怎么用计算机的搜索,win10如何使用快捷键打开搜索框_win10打开电脑搜索框的快捷键是什么...
  20. 帝企鹅日记(史上第二受欢迎记录片 老少皆宜的冰雪童话)

热门文章

  1. 权限细粒度之参数控制,不同人看到报表模板不同
  2. Python 爬虫实战,模拟登陆爬取数据
  3. excel 通过身份证 计算 年龄、性别
  4. tf.one_hot()的用法
  5. wordpress新留言微信提醒
  6. C语言课设销售管理系统设计
  7. BlogsToWordPress v16.9 – 将(新版)百度空间,网易163,新浪sina,QQ空间,人人网,CSDN,搜狐Sohu,博客大巴Blogbus,天涯博客,点点轻博客等博客搬家到Wor
  8. 利益相关者软件工程_吸引组织的各个利益相关者的4种方法
  9. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java面向新手投资者的虚拟股票交易系统h1o29
  10. Ubuntu 20.04系统安装及初始配置