原标题:这个C语言题目究竟谁该背锅?竟然是它。。。

问题来源

各位,今天给大家带来一道有问题的C语言题目,初学者犯这种错误的可能性不小,大家来看一下这应该是谁的锅呢?问题代码如下:

1

代码分析

代码分析

其实这段代码是比较简单的,意图是定义一个 del_space 函数,用于删除字符串中的空格。在 main 函数中传递给 del_space 函数的是“Hello All Time!”,预期输出应该是 “ HelloAllTime!”,但实际的输出的确是 “HelloAllTime!e!”,看下面的图:

这到底是哪里出了问题呢?

2

代码修改

代码修改

这位小伙伴自己琢磨了半天,以为是函数里用一个变量str导致的,因此他创建了一个30字符的临时数组,最后再把a复制到str,修改如下:

修改过后的程序运行结果如图:

我们可以发现修改过后程序的确可以按照要求输出了 “HelloAllTime!”,但这真是问题的真正原因吗?其实不是的。

3

原因解析

原因解析

回答这个问题之前我们先明确一个大家都知道的基础知识:字符和字符串的区别,‘h'表示字符h,占一个字节,而“h"为字符串h,加上空字符一共两个字节,也就是说字符串都是以空字符结尾。这道题问题其实就出在这里, del_space 函数中的目标 str 没有指定结束字符空字符,删掉两个空格后原str中的最后两个字符e和!还在,而!后面才是空字符,因此打印字符串时候到空字符才停止, 所以该背锅的因该是空字符,修改很简单,最后追加空字符就可以了,如下:

写在最后:

通过这道题,我们可以看出出错的地方往往是最不起眼的地方,所以在编程语言的学习中,细节同样很重要,一点一滴都不能放过,否则你将付出十倍的精力来处理它,请大家牢记!

欢迎大家留言区讨论哦!

Wink !

中国顶尖高校各大学科权威排名!

用C语言验证 “6174黑洞之谜”?

2月编程语言排行榜 来了!

Linux 内核代码数达到 2700 万行量级!

盘点历史上著名的几大计算机病毒!!!

移动端的APP都是用什么编程语言写的?

UNIX和Linux 之间到底是啥关系?

程序猿用C语言写给女友的一封情书。。。

指针函数,函数指针,有点懵圈了???

C语言斩获“2019年度最佳编程语言”

某汽车名企C语言经典面试题,值得一看!

一个经典且稍有难度的C面试题,值得一看!

对于 printf , 你确定你很熟?

空指针 到底是什么意思?

为什么用 if(0 == x) 而不是 if(x == 0) ?返回搜狐,查看更多

责任编辑:

c语言 字符串 timu,这个C语言题目究竟谁该背锅?竟然是它。。。相关推荐

  1. c语言字符串文库总结,C语言字符串.ppt

    C语言字符串.ppt ACM程序设计,福州大学至诚学院 冯新,第四讲,字符串处理,常用函数介绍,复制,char* strcpy char *s1, const char *s2; 将字符串s2复制到s ...

  2. c语言 字符串切片重组,C语言实现分割字符串

    背景 遇到一个将字符串分割场景.以前从没有用c语言实现,都是使用python的split()函数,python处理起来很简单. split()方法语法: str.split(str="&qu ...

  3. c语言 字符串切片重组,c语言 字符串的拼接和分割实例

    1.字符串的拼接 使用c的函数char *strcat(char *str_des, char *str_sou); 将字符串str_sou接在字符串str_des后面(放在str_des的最后字符和 ...

  4. c语言 字符串 timu,C语言面试题10道题 ——(一)

    #include void fun(int *p); void funchar(char *p); int main() { //test1 //const char *p = "aaa&q ...

  5. c语言字符串子串问题,C语言计算字符串子串出现的次数

    #include #include int substring(char *str,char *str1);//函数原型 int main(void) { char str[64]={0}; char ...

  6. c语言字符串怎么退位,C语言第五六次作业.ppt

    C语言作业解析 第四弹 原来真正变态的是这两作业哇 原本是做完第五次作业等大家数分期中考完以后给大家 结果直接出了第六次 就顺便做了 买一送一还包邮哦亲 虽然这两次作业比较难 理解起来困难无比 不过考 ...

  7. c语言字符串递归例子,c语言函数递归(简单的递归例子c语言)

    若在main函数中调用hanoi(3,'A','B','c')运行结果 void move(char getone,char . 分成三组: (一), 目的:将1号和2号从A移到B 调用函数:hano ...

  8. c语言字符串加减_C语言中指针的介绍

    C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...

  9. C语言字符串中运算符,c语言字符串中找到一个运算符,怎样实现运算

    1.一个字符串里面包含运算符,要转成正常运算的运算符,可以用 宏指令.相当于直接执行语句.宏指令在不同语言中执行方式不同的. 2.例程: //基本的堆栈思想 #include #include typ ...

最新文章

  1. pmdk -- libpmemlog 介绍
  2. 基金委托管理系统试题
  3. MySQL于ON DUPLICATE KEY UPDATE采用
  4. 序列化 自定义名字_反序列化漏洞(Web漏洞及防御)
  5. 虚拟机centos7.3不能启动
  6. 杨强教授领衔力作,《迁移学习》最新出炉,解决AI“最后一公里”问题 | 赠书...
  7. LayUI数据表格复选框显示不居中问题
  8. 麒麟ARM版:不能使用U盘安装,只能使用光盘
  9. 2.5 js格式化时间库
  10. C#方法参数传递及方法重载
  11. 后端Java人必备:30个优化SQL的良心建议
  12. Adobe全家桶系列百度云(含最新软件安装包+安装教程)
  13. Windows进不去系统(蓝屏、黑屏、BIOS更新等无法开机的情况),试试这几种解决办法
  14. C语言数据结构【手抄版】第五章 树和二叉树【尾篇】二叉树C实现
  15. 深度解读 | VR中的See-Through技术
  16. 电脑突然卡主动不了了_电脑经常卡死是什么原因
  17. 编程之美 烙饼问题 java实现(检测状态是否出现过)
  18. php征婚段子,婚姻婚礼类阿金短视频脚本段子剧本台词范例抖音快手素材
  19. 太阳软件站长丨Python比动态ip代理更适合人工智能
  20. 数据库系统概论复习笔记总结

热门文章

  1. 从零开始的机械臂yolov5抓取gazebo仿真(环境搭建篇下)
  2. 非常详细完整的项目实施管理流程
  3. XTU 1255勾股数
  4. icu服务流程图_手术后病人送ICU的交接流程图
  5. xcode mac使用技巧
  6. 棋牌app在微信内无法转发分享怎么办?
  7. windows内核开发笔记七:内核开发OVERLAPPED结构体详解
  8. 会议室怎么添加预约功能?快速解决会议室使用效率问题
  9. android 遍历实体类,Java中遍历实体类(处理MongoDB)
  10. 日语高考生能报计算机,日语高考生能报计算机 日语练习册高考