c语言 字符串 timu,这个C语言题目究竟谁该背锅?竟然是它。。。
原标题:这个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语言题目究竟谁该背锅?竟然是它。。。相关推荐
- c语言字符串文库总结,C语言字符串.ppt
C语言字符串.ppt ACM程序设计,福州大学至诚学院 冯新,第四讲,字符串处理,常用函数介绍,复制,char* strcpy char *s1, const char *s2; 将字符串s2复制到s ...
- c语言 字符串切片重组,C语言实现分割字符串
背景 遇到一个将字符串分割场景.以前从没有用c语言实现,都是使用python的split()函数,python处理起来很简单. split()方法语法: str.split(str="&qu ...
- c语言 字符串切片重组,c语言 字符串的拼接和分割实例
1.字符串的拼接 使用c的函数char *strcat(char *str_des, char *str_sou); 将字符串str_sou接在字符串str_des后面(放在str_des的最后字符和 ...
- c语言 字符串 timu,C语言面试题10道题 ——(一)
#include void fun(int *p); void funchar(char *p); int main() { //test1 //const char *p = "aaa&q ...
- c语言字符串子串问题,C语言计算字符串子串出现的次数
#include #include int substring(char *str,char *str1);//函数原型 int main(void) { char str[64]={0}; char ...
- c语言字符串怎么退位,C语言第五六次作业.ppt
C语言作业解析 第四弹 原来真正变态的是这两作业哇 原本是做完第五次作业等大家数分期中考完以后给大家 结果直接出了第六次 就顺便做了 买一送一还包邮哦亲 虽然这两次作业比较难 理解起来困难无比 不过考 ...
- c语言字符串递归例子,c语言函数递归(简单的递归例子c语言)
若在main函数中调用hanoi(3,'A','B','c')运行结果 void move(char getone,char . 分成三组: (一), 目的:将1号和2号从A移到B 调用函数:hano ...
- c语言字符串加减_C语言中指针的介绍
C语言中指针的介绍 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编 ...
- C语言字符串中运算符,c语言字符串中找到一个运算符,怎样实现运算
1.一个字符串里面包含运算符,要转成正常运算的运算符,可以用 宏指令.相当于直接执行语句.宏指令在不同语言中执行方式不同的. 2.例程: //基本的堆栈思想 #include #include typ ...
最新文章
- pmdk -- libpmemlog 介绍
- 基金委托管理系统试题
- MySQL于ON DUPLICATE KEY UPDATE采用
- 序列化 自定义名字_反序列化漏洞(Web漏洞及防御)
- 虚拟机centos7.3不能启动
- 杨强教授领衔力作,《迁移学习》最新出炉,解决AI“最后一公里”问题 | 赠书...
- LayUI数据表格复选框显示不居中问题
- 麒麟ARM版:不能使用U盘安装,只能使用光盘
- 2.5 js格式化时间库
- C#方法参数传递及方法重载
- 后端Java人必备:30个优化SQL的良心建议
- Adobe全家桶系列百度云(含最新软件安装包+安装教程)
- Windows进不去系统(蓝屏、黑屏、BIOS更新等无法开机的情况),试试这几种解决办法
- C语言数据结构【手抄版】第五章 树和二叉树【尾篇】二叉树C实现
- 深度解读 | VR中的See-Through技术
- 电脑突然卡主动不了了_电脑经常卡死是什么原因
- 编程之美 烙饼问题 java实现(检测状态是否出现过)
- php征婚段子,婚姻婚礼类阿金短视频脚本段子剧本台词范例抖音快手素材
- 太阳软件站长丨Python比动态ip代理更适合人工智能
- 数据库系统概论复习笔记总结