scanf()的问题
/*
问题:当我第一次输入一个数字,再敲回车的时候,回车也被作为一次输入,这样第二个scanf就不起作用了。
怎么解决呢?(要求不使用cin和cout)
*/
//============================================================
#include <stdafx.h>
void main()
{
int a;
char b;
printf( "input a number:\n ");
scanf( "%d ",&a);
printf( "a=%d\n ",a);
printf( "input a character:\n ");
scanf( "%c ",&b);
printf( "b=%c\n ",b);
}
[解决办法]
printf( "input a number:\n ");
scanf( "%d ",&a);
printf( "a=%d\n ",a);
—————————————————
printf( "input a number:\n ");
scanf( "%d ",&a);
printf( "a=%d\n ",a);
fflush(stdin);
[解决办法]
这样算不算,在后面scanf( "%d ",&a);加一条语句cin.get();把回车符吃掉,
[解决办法]
::getchar();吃掉回車符
[解决办法]
在连续的scanf中会出现缓冲区读入回车的问题,所以要及时的刷新缓冲区
#include <stdafx.h>
void main()
{
int a;
char b;
printf( "input a number:\n ");
scanf( "%d ",&a);
fflush(stdin);
printf( "a=%d\n ",a);
printf( "input a character:\n ");
scanf( "%c ",&b);
printf( "b=%c\n ",b);
}
[解决办法]
最好还是不要用fflush(stdin)
c语言里面只规定了fflush(stdout)而fflush(stdin)只是一些编译器默认支持的。
[解决办法]
如果只是在这题,我建议用如下方法;
#include <stdafx.h>
void main()
{
int a;
char b;
printf( "input a number:\n ");
scanf( "%d ",&a);
while (getchar () != '\n ') // 吃掉缓冲区多余的数据
{
;
}
printf( "a=%d\n ",a);
printf( "input a character:\n ");
scanf( "%c ",&b);
printf( "b=%c\n ",b);
}
[解决办法]
多用一个字符变量吧~~~
这样就OK了!
int main(int argc, char* argv[])
{
int a;
char b,c;
printf( "input a number:\n ");
scanf( "%d ",&a);
printf( "a=%d\n ",a);
printf( "input a character:\n ");
scanf( "%c%c ",&b,&c);
printf( "b=%c\n ",c);
return 0;
}