新民歌演唱会第四季:为什么运行不了Scanf后面的东西

来源:百度文库 编辑:高校问答 时间:2024/04/23 19:25:56
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"//system的头文件

#define SIZE 100
void input()
{
int i,amount,c;
char ask;
system("cls");

for (i=0;i<80;i++)
printf ("#");
printf ("\n\t\t\t欢迎使用火车票信息录入系统。\n\n");
for (i=0;i<80;i++)
printf ("#");

struct ticket
{
char num[16];//车次
char start[16];//起点
char finish[16];//终点
char time_start[22];//起点出发时间
char time_finish[22];//终点到达时间
int seat;//座位
char style[10];//类型
}t[SIZE];//定义一个结构体。

for(;;)
{ printf ("您要录入多少条火车票信息?1");
scanf ("%d",&amount);

if (amount>=100||amount<0)
{
printf ("请输入一个1到100的数字");
continue;//如果要录入的信息数目不在1-100之间便提示错误,并重新录入
}
else
break;//如果要录入的信息数目在1-100之间便跳出循环转到下一语句继续运行。
}

for (c=0;c<SIZE;c++)

if (t[c].num==NULL) break;//如果已经达到需要录入的数目就结束任务。

for (i=0;i<amount;i++)
{
printf ("\n请输入第%d条信息!\n",i+1);//提示输入的是第几条信息
printf ("\n车次(如K241):");
scanf ("%s",&t[i].num);//提示并且输入车次
printf ("起点(如广州东站):");
scanf ("%s",&t[i].start);//提示并且输入起点
printf ("终点(如广州站):");
scanf ("%s",&t[i].finish);//提示并且输入终点

for(;;)//此循环防止起点和终点一样
{
if(strcmp(t[i].start,t[i].finish)==0)//判断起点和终点是否一样
{ printf ("起点站和终点站不能一样!\n");
printf ("起点:");
scanf ("%s",&t[i].start);//提示并且输入起点
printf ("终点:");
scanf ("%s",&t[i].finish);//提示并且输入终点
}
else
break;
}

printf ("起点出发时间(如06:30):");
scanf ("%s",&t[i].time_start);//提示并且输入起点出发时间
printf ("终点到达时间(如16:45):");
scanf ("%s",&t[i].time_finish);//提示并且输入终点到达时间
printf ("座位(如16):");
scanf ("%d",&t[i].seat);//提示并且输入座位
printf ("类型(如硬/学或者卧/普):");
scanf ("%s",&t[i].style);//提示并且输入类型

printf("\n您的本次输入的信息为:\n\n");
printf("车次 起点\t 终点\t 起点出发时间 终点到达时间 座位 类型\n");
printf("%-6s%-12s%-16s%-12s%-16s%-6d%-12s\n\n",t[i].num,t[i].start,t[i].finish,t[i].time_start,t[i].time_finish,t[i].seat,t[i].style);
//对每一条录入的信息进行报表
printf ("按“r”重新输入,按“b”返回,按“q”退出,按其他键保存并继续。\n");
//提示用户的下一步操作
scanf ("%c",&ask);
switch (ask)
{
case 'r':i--;break;
case 'b':return;
case 'q':exit(0);
default:{FILE *fp;
if ((fp=fopen("ticket.txt","a+"))==NULL)
printf ("文件打开失败");break;
int a;
for(a=0;a<SIZE;a++)
{if(t[a].num==0) continue;
else if(fwrite(&t[a],sizeof(struct ticket),1,fp)!=1)
printf("file write error.\n");
}
fclose(fp);
printf("\n火车票信息储存成功!\n\n");
};break;
}
}
}

你输入输出太多,每执行一次输入操作后,清空一下输入输出缓冲区就可以了!!