永发信息网

为什么运行不能输入scanf("%c",&c);这一步!见图!

答案:1  悬赏:20  手机版
解决时间 2021-04-04 11:18
  • 提问者网友:伴风望海
  • 2021-04-03 18:52
为什么运行不能输入scanf("%c",&c);这一步!见图!
最佳答案
  • 五星知识达人网友:傲气稳了全场
  • 2021-04-03 20:06
#include
main()
{int result,month,age;
char c;
printf("\nInpit your result:");
scanf("%d",&result);
if (result<-14||result>1184)
{printf("Wrong Result!Press any key for end...\n");
scanf("%c",&c);
exit(0);
}
month=(result+115)/100;
age=(result+115)%100;
printf("Your age is:%d,month:%d",age,month);
}

scanf()函数是从键盘缓冲区取数据,而不是直白的理解为我按一个键它才取走,因为你按下的键都被存入缓冲区,也就是说。你的这个函数没有起作用是因为你的键盘缓冲区还有字符,于是scanf()就不等你按下键,直接从缓冲区取走了。
记住scanf()不是直接和你打交道,你和scanf()之间还有个键盘缓冲区这样的中间代理人。

所以你的程序会出现没等你输入就直接结束了。

解决办法:
在scanf()前加入fflush(stdin);语句,你先不必观这个函数怎么来的,你只需要知道,你这样做了,键盘缓冲区就被清空。

以上是针对scanf()来说的。
但就你的程序目的来说。你用scanf()来让程序暂停很不好!

解决办法:
调用dos命令:
把scanf()语句换成 system("pause");
就可以让程序暂停了。这个语句是所有编译器都支持的。而且很安全。
不过这样做调用的是dos操作系统命令,只在win系统下用。不过已经满足你的连续需求了。

最后,你的程序结构有店不好。
你的
if (result<-14||result>1184)
{printf("Wrong Result!Press any key for end...\n");
scanf("%c",&c);
exit(0);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯