鱼C论坛

 找回密码
 立即注册
查看: 1345|回复: 1

[已解决]最后s[i] = '\0'时不就覆盖了最后一个数吗

[复制链接]
发表于 2020-2-4 12:52:00 | 显示全部楼层    本楼为最佳答案   
首先,整体来看,数组s应该是想获取输入内容中的0~9的数字(下列统称十进制数),
                while(isdigit(s[++i] = c = getch()))
                        ;
注意这个while循环的跳出条件,当它跳出的时候,就是isdigit()返回0(即获取的内容为非十进制数)。
函数传参的表达式先执行,即s[++i] = c = getch()已经被执行了,此时s数组最后一个存储的内容是一个非十进制数,这不是我们想要的十进制数,所以下一句
s[i] = '\0'; 覆盖的内容不是我们想要的十进制数。
因此没问题。

如果猜错,欢迎指出。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-5 02:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表