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之间


    推荐阅读