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

scanf()的有关问题

2012-03-04 
scanf()的问题/*问题:当我第一次输入一个数字,再敲回车的时候,回车也被作为一次输入,这样第二个scanf就不

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;
}

热点排行