在用strcmp进行字符串比较时,两个字符串的内容完全一样,但返回结果却不是0,找了好长时间才发现问题。
先看下面的这段程序,当我从控制台输入12345按回车之后,输出的结果是-1。

#include<stdio.h>
#include<string.h>
int main()
{char s1[5];char s2[5] = {'1','2','3','4','5'};for (int i = 0; i < 5; i++)scanf("%c", &s1[i]);int result = strcmp(s1, s2);printf("%d",result);
}

调试状态查看变量的值,发现s1和s2的值是完全相同的。

其实如果对strcmp足够了解,看到这儿就应该已经发现问题了,s1和s2都缺少了’\0’,strcmp的比较规则是:将两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到’\0’为止。
s1和s2相等且都没有’\0’,那么它们的比较缺少终止条件,因此strcmp返回的结果不正确。
解决方法就是在定义字符数组时,比实际需要的空间多一个字符,上面的代码中,修改成下面这样,再输入12345就能输出0了。

#include<stdio.h>
#include<string.h>
int main()
{char s1[6] = { '\0' };char s2[6] = {'1','2','3','4','5'};for (int i = 0; i < 5; i++)scanf("%c", &s1[i]);int result = strcmp(s1, s2);printf("%d",result);
}

strcmp比较结果异常的一种可能原因相关推荐

  1. junit 5测试异常处理_在JUnit中处理异常的3种方式。 选择哪一个?

    junit 5测试异常处理 在JUnit中,有3种流行的方式来处理测试代码中的异常: 试捕习语 使用JUnit规则 带注解 我们应该使用哪一个?何时使用? 试捕习语 这个习语是最受欢迎的习语之一,因为 ...

  2. 业务异常 java_谈谈RxJava处理业务异常的几种方式

    此文介绍了RxJava处理业务异常的几种方式,分享给大伙.具体如下: 关于异常 Java的异常可以分为两种:运行时异常和检查性异常. 运行时异常: RuntimeException类及其子类都被称为运 ...

  3. express捕获全局异常的三种方法

    express捕获全局异常的三种方法 参考文章: (1)express捕获全局异常的三种方法 (2)https://www.cnblogs.com/chenqionghe/p/11349521.htm ...

  4. Win11dns异常怎么修复?Win11修复dns异常的三种方法

    ​DNS服务异常就是服务器故障,找不到服务器的地址.常会出现的问题诸如网络故障.网站故障.电脑DNS设置错误等,那么对于DNS异常应该怎么修复呢?今天小编将为大家分享Win11修复DNS异常的三种方法 ...

  5. Win11的两个实用技巧系列之解决dns异常的三种方法、win10/win11卡顿的三种解决办法

    电脑dns异常怎么修复win10? Win10解决dns异常的三种方法 电脑dns异常怎么修复win10?最近有很多win10用户遇到dns配置错误的问题,这让用户非常苦恼,下面我们就来看看Win10 ...

  6. 计算机网络发生异常怎么处理,突然断网怎么办?家庭网络异常的三种处理办法...

    原标题:突然断网怎么办?家庭网络异常的三种处理办法 最近有人在后台留言说,明明网络也还没到期,但电脑就是无法上网,也不知道是哪一部分发生了问题.今天小A就来给大家讲讲,如何判断并解决家用电脑的网络问题 ...

  7. 远程桌面 计算机图标异常,win7系统图标异常怎么办_解决win7图标异常的两种方法...

    最近有使用雨林木风win7旗舰版系统的用户反应自己电脑的图标显示异常,所有图标都变成了白色,不知道怎么回事.那这种情况对于不太熟悉电脑的朋友来说,可能不知道该怎么办.这样的话下面小编就来为大家分享wi ...

  8. 业务异常 java_浅谈RxJava处理业务异常的几种方式

    本文介绍了RxJava处理业务异常的几种方式,分享给大家.具体如下: 关于异常 Java的异常可以分为两种:运行时异常和检查性异常. 运行时异常: RuntimeException类及其子类都被称为运 ...

  9. 计算机电脑蓝屏原因,如何解决计算机蓝屏?计算机蓝屏的几种常见原因和解决方案...

    几乎所有使用计算机的朋友都遇到了计算机蓝屏现象. 电脑蓝屏是非常普遍的现象. 甚至在重要的场合(例如Windows 98功能的引入),比尔·盖茨都未能避免出现蓝屏. 现象. 那么如何解决电脑蓝屏呢?以 ...

最新文章

  1. 7 款可替代 top 命令的工具!(二)
  2. ESI世界大学排名:371所内地高校上榜!
  3. linux 修改docker配置文件,dockerfile动态修改服务配置文件(示例代码)
  4. 记一次phpstudy重启后Apache无法启动
  5. 自动图片轮播php源码,js实现自动图片轮播代码
  6. 64位windows系统如何显示32位dcom组件配置
  7. art.dialog重设弹窗大小和刷新位置
  8. 【Antlr】Antlr生成调用图
  9. 数据统计作业0429_因子分析/FA
  10. 西瓜书+实战+吴恩达机器学习(九)监督学习之k近邻 K-Nearest Neighbor
  11. 获取div相对文档的位置
  12. Linux系统的命令应该如何记
  13. 穿越火线显示无法连接服务器,穿越火线无法连接服务器是什么原因
  14. 基于Python的语音识别控制系统
  15. vue axios轮询更新echarts 页面崩溃问题
  16. 方维o2o系统多通道支付的实现
  17. Java API常用package介绍
  18. python绘制蟒蛇_Python基本图形绘制——蟒蛇绘制
  19. 什么是DLL,如何调用DLL
  20. nacos连接mysql失败_完美解决MySQL通过localhost无法连接数据库的问题

热门文章

  1. c语言电脑上怎么打出来,c语言中表示或者的符号“||”在电脑上怎么打出来?...
  2. python简单的爬虫教程中召唤小海龟_Python爬虫入门小练习之简单的50行(一)
  3. 我穿越了,未来与历史任我畅游,智慧博物馆新技术实践案例应用分享
  4. Select2 样式
  5. linux显示当前目录命令
  6. CSS 中px、em、rem、%、vw、vh单位之间的区别详解【全网最全】
  7. L4自动驾驶实现之前,汽车最需要的“标配”竟是TA
  8. 做人的底线:不忘恩情,不失诚信,不伤人心
  9. 李宏毅2023机器学习作业HW03解析和代码分享
  10. python tabula 使用方法_Python tabula py不会读取pd