图片是节选代码,是一个故意有问题的例子,书上说,此代码出错点就是比如你输入了
a【空格】2【空格】 3【回车】
之后调用dispaly函数然后printf完最后的两行,就直接跳出循环了,而期望目标是重新希望用户输入。
书上写的是跟在3后面的【回车】被getchar读取了,因此满足循环跳出条件。我的疑问是为什么getchar下一个读取的是3后面的【回车】,不是a后面的【空格】?
哦,我输入了ab【空格】3【空格】4【回车】这时会怎么样?
追答a还是给了ch,b给了rows,3给了cols,执行循环。
下次循环空格给了a,4给了rows,cols还在等待输入。(错了,我想想)
我试了一下结果不是这样的,应该是读取a之后,没能读到2和3,因此没有调用display,却直接printf了,第二次循环,getchar读到了字符b,然后读到了2 3,就调用上了display输出两行三列b,第三次getchar读取到了\n,就跳出循环了。好难啊,谢谢了!
你把b改成数字就是我说的那样了 ,刚才没有考虑到格式问题。
本回答被提问者采纳