首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c输入输出的有关问题,搞不明白

2012-12-16 
c输入输出的问题,搞不明白代码如下:double x,ywhile((scanf(%lf%lf,&x,&y)!2)||x0||y0){printf(!

c输入输出的问题,搞不明白
代码如下:
double x,y;
while((scanf("%lf%lf",&x,&y)!=2)||x==0||y==0)
{
printf("!");
scanf("%*s");
printf("?");
}
为什么当我输入是:1空格0回车时,程序只输出"!",接着再输入一个数才显示"?",搞不明白啊!
[最优解释]
x==0
[其他解释]

引用:
引用:引用:
C/C++ code?12scanf("%*s");

想干啥?
+1,这是要干啥
为了清空缓冲流的非法输入,向缓冲流读取string数据,但不赋值,就相当于直接丢弃! 
个人理解!

用fflush(stdio);
[其他解释]
引用:
代码如下:
double x,y;
while((scanf("%lf%lf",&x,&y)!=2)
[其他解释]

scanf("%*s");


想干啥?
[其他解释]
引用:
C/C++ code?12scanf("%*s");

想干啥?

+1,这是要干啥
[其他解释]
为了清空缓冲流的非法输入,向缓冲流读取string数据,但不赋值,就相当于直接丢弃!
[其他解释]
引用:
引用:
C/C++ code?12scanf("%*s");

想干啥?
+1,这是要干啥

为了清空缓冲流的非法输入,向缓冲流读取string数据,但不赋值,就相当于直接丢弃! 
个人理解!
[其他解释]
引用:
引用:
引用:引用:
C/C++ code?12scanf("%*s");

想干啥?
+1,这是要干啥
为了清空缓冲流的非法输入,向缓冲流读取string数据,但不赋值,就相当于直接丢弃! 
个人理解!
用fflush(stdio);

这个我知道啊,但为什么这个程序运行结果是这样子的
[其他解释]

double x,y;
while((scanf("%lf%lf",&x,&y)!=2)
[其他解释]
y==0)
{
printf("!");
scanf("%*s");//输入缓存回车
printf("?");
}

[其他解释]
x==0
[其他解释]
y==0)
{
printf("!");
scanf("%*s");
printf("?");
}
为什么当我输入是:1空格0回车时,程序只输出"!",接着再输入一个数才显示"?",搞不明白啊!


你的scanf("%*s")语句的问题。
当你输入1空格0后,开始执行while循环体中的语句,printf("!");
然后scanf("%*s")等待你的输入。完成后在执行下条printf语句。
你这种方法貌似不能达到清空缓冲流中的非法输入的目的吧。。

[其他解释]
我也没见过这种清空缓冲流的方法啊
[其他解释]
1、你这个代码不知所云,根本不能清空缓冲流。清空应该用fflush(stdin)
2、你这个代码就是先输入2个数,然后进入循环,执行第一个printf,然后再输入一个数,接着执行第二个printf
3、建议你看看msdn或者其他的scanf的例子,看看正确的用法

热点排行