中易网

TC2.0中循环语句中的字符输出问题

答案:2  悬赏:70  
解决时间 2021-03-02 19:24
#include "stdio.h"
void main()
{int i;
char ch;
float a,*s=&a;
struct userinf
{int num;char address[20];char hum[10];float last;float now;float yuer;}record[500];
FILE *fp;
fp=fopen("123.rec","wb");
if(fp==NULL)
{printf("shibai");
exit(0);}
for(i=0;;i++)
{printf("num\taddress\thum\tlast\tnow\tyuer\n");
scanf("%d %s %s %f %f %f",&record[i].num,record[i].address,record[i].hum,&record[i].last,&record[i].now,&record[i].yuer);
fwrite(&record[i],sizeof(struct userinf),1,fp);
printf("continue:(y/n)?\n");
printf("input c:");
scanf("%c",&ch);
if(ch=='n'||ch=='N')
break;
}
fclose(fp);
}
程序如上:
为什么运行时输入一组数据后的结果变成了
input c: num address hum last now yuer
它不是应该先执行:
printf("continue:(y/n)?\n");
printf("input c:");
scanf("%c",&ch);
吗?
那就应该先只输出:
input c:
等我输入字符后再显示:
num address hum last now yuer
才对啊??
为什么不是这样呢?
我还没输入字符它就默认进入了第二次循环了?
怎么回事??谢谢解答!!
最佳答案
这是因为在你打上一行数据后,回车确认后,这一行的数据就被输入出去了,但是回车没有被输入的,它还被保留在键盘的缓冲区里面,之后执行
printf("continue:(y/n)?\n");
printf("input c:");
scanf("%c",&ch);
这样这个 回车 就被输入到 ch 里面了,所以会
input c: num address hum last now yuer
把缓冲区清空就不会了,清空缓冲区用 fflush(stdin);
全部代码如下:
#include "stdio.h"
void main()
{int i;
char ch;
float a,*s=&a;
struct userinf
{int num;char address[20];char hum[10];float last;float now;float yuer;}record[500];
FILE *fp;
fp=fopen("123.rec","wb");
if(fp==NULL)
{printf("shibai");
exit(0);}
for(i=0;;i++)
{printf("num\taddress\thum\tlast\tnow\tyuer\n");
scanf("%d %s %s %f %f %f",&record[i].num,record[i].address,record[i].hum,&record[i].last,&record[i].now,&record[i].yuer);
fwrite(&record[i],sizeof(struct userinf),1,fp);
fflush(stdin);
printf("continue:(y/n)?\n");
printf("input c:");
scanf("%c",&ch);
if(ch=='n'||ch=='N')
break;
}
fclose(fp);
}
全部回答
你好! 你这好像是一个死循环吧.没有INPUT语句.输出语句是OUTPUT.也没有END语句.无法判断在什么条件下终止循环/ 如有疑问,请追问。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
誉满客物流我想知道这个在什么地方
作 文 评对联
贷款公司的钱从哪来的?
如果你知道你男朋友和别的女孩旅游,代表?
庭院煤气管埋深为什么要埋在“土壤冰冻线 以
农村信用社前进信用社立交桥分社地址在哪,我
公积金卡掉了怎么办?
蚂蚁从点A出发向北偏东30°方向走4cm到点B,
为什么我去我亲妈那里总是维系不起了我在养母
春节加班费的发放
作文我再也不考试偷看了 500字
《白杨》 爸爸的微笑消失了,脸色变得严肃起
长城M4的地盘高还是江淮瑞风S2的地盘高?
钱塘江路/雅山北路(路口)在什么地方啊,我要
香港大学深圳医院西2门(人行门)我想知道这个
推荐资讯
lr6.2.1版本阶面怎样设置成英文阶面
闯红灯一次扣几分?
谁有同桌100学习网的卡号和卡号密码。。
奥体东站3口我想知道这个在什么地方
如何 算出 软件的激活码
求一份 完整的 新鲜水果配送创业计划书
盛世家园地址在哪,我要去那里办事
打开ESP和关掉ESP的区别
蕨勾是什么,如何煮才好吃?
主板的键盘插槽会有接触不良吗
月经期间的脸怎么会浮肿起来的呢
是什么限制了人脑的进化
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?