c语言小白:关于c语言scanf(\"%*s\")使用的一个问题
亲,scanf全是坑,新人一点都不友好。
■网友
while( ( status = scanf("%d",\u0026amp;base) ) != 1 ) || ( base\u0026lt;2 || base\u0026gt;10 ) )
【c语言小白:关于c语言scanf(\"%*s\")使用的一个问题】 {
if (status != 1)
scanf("%*s");
printf("base should be an integer bigger than 2 and smaller than 10:\");
}
printf("%d",base);
试一下这样会不会好一点~~
■网友
因为情况3里,1、你第一次输入50时,程序执行到while那一行,50被赋值给base,并进入循环。2、运行到scanf("%*s");这时候你要输入一个字符串然后被忽略掉。3、才运行到输出提示那一步。4、回到了while那一行,你输入一个5,然后正确输出5。这种问题自己debug走一下就好了,应该很简单的吧。。。——————————萧大的意思应该是不要手工输测试数据,但是提交到oj上的代码就是要用到scanf,没办法呀。这时候有一个技巧是用freopen去重定向输入,把要输入的数据写在一个文件里就好了。这样平时测试不用手工输数据,提交时只要注释掉freopen这行代码就行了。
■网友
你这代码和问题看的我直头晕!
while ()有两个判断条件
scanf ("%d", \u0026amp;base)的返回值不能是1,也就是base赋值不成立的时候! base的值是3和9之间
推荐阅读
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- OC为何跌出语言榜前十
- |徐州市出台《关于优化创新创业生态系统 提升区域科技创新活力的实施意见》及实施细则
- 雨下|全球关于禁售燃油车只是理论上可行吗
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 人民车市|新语言、新起点,捷达VS7 强势入局
- 智叔|很多家长还在整箱买:谈谈关于牛奶的17个真相警惕这些列入黑名单的“假牛奶”
- 关于微信小程序的思考:运营者该何去何从
- C语言 指针引用数组的地址问题
