Ferry. 2019-01-15 15:01 采纳率: 28.6%
浏览 834

我这个无限循环为什么不能停止,我已经输入了n,为什么还能继续向下循环

#include "stdio.h"
#include "stdlib.h"
typedef struct student
{
long unsigned id; //学号
char name[20]; //姓名
int old; //年龄
char sex; //性别
int born; //出生年月
char address[100]; //地址
double phone; //电话
char Email[100]; //Email
}student;
typedef struct Node
{
double grades;
Node * prev;
Node * next;
}Node;
int main()
{
student s;
FILE * fp;
char ch;
char num[80]; //最长字符串为80
fp=fopen("xueshengxinxi.txt","wb");
if(!fp)
{
printf("file cannot be opened");
exit(1);
}
printf("Enter records:\n");
while(1)
{
printf("id: ");
gets(num);
s.id=atol(num); //atol将数字串转化为长整型
printf("name: ");
gets(s.name);
printf("old: ");
scanf("%d",&s.old);
printf("sex: ");
scanf("%s",&s.sex);
printf("born: ");
scanf("%ld",&s.born);
printf("address: ");
scanf("%s",&s.address);
printf("phone: ");
scanf("%ld",&s.phone);

printf("Email: ");
scanf("%s",&s.Email);
fwrite(&s,sizeof(s),1,fp); //将当前读取的记录s写入文件
printf("another(y/n)?"); //输入y或n,y表示继续输入,n表示停止
ch=getchar();
if(ch=='n')
break;
gets(num); //清空输入缓冲区
}
fclose(fp);
return 0;
}

  • 写回答

2条回答 默认 最新

  • jiajin_shanghai 2019-01-15 15:12
    关注

    取决于你的终端的输入;
    ch=getchar();

    打样出来看看是否是输入了'n';
    printf("input key is %c",ch);
    打样处理看看。

    评论

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条