关于gets()函数一个很纠结的有关问题,具体请进

关于gets()函数一个很纠结的问题,具体请进
代码很长(是操作系统关于模拟先来先服务算法的),所以我事先说一下问题的所在看一下图片关于gets()函数一个很纠结的有关问题,具体请进

等下请各位大神看下gets()函数,第一次循环能用,第二次就不行了。。。代码中就有一个...这个问题是在让我无语了很久,DEBUG也没有找出头绪


#include<stdio.h>
#include <stdlib.h>
#include<windows.h>
#include<string.h>

struct fcfs_member
{
char Process_name[10]; //进程名
int Arrival_time; //到达时间
int Service_time;  //服务时间
int Start_time;  //开始执行时间
int Completion_time; //完成时间
int Turnaround_time; //周转时间 
float Weighted_turnover_time; //带权周转时间
};

void main()
{
int system(const char *string); //声明清屏函数

struct fcfs_member FCFS_member[4];

printf("下面为一个实例,如果仅测试程序,可按下面数据进行输入\n");
printf("进程名   到达时间   服务时间   开始执行时间   完成时间\n");
printf("  A         0          1            0             1\n");
printf("  B         1         100           1             1\n");
printf("  C         2          1           101           102\n");
printf("  D         3         100          102           202\n\n");

printf("请输入四组数据!连续输入对应数据以空格分隔\n\n");

//------------------------导入数据,并进行排序-----------------------------
int i, j;
for(i=0; i<4; i++)
{
printf("第%d组\n", i+1);

printf("进程名:");
gets(FCFS_member[i].Process_name);

printf("\n到达时间   服务时间   开始执行时间   完成时间\n");
scanf("%d %d %d %d",    &FCFS_member[i].Arrival_time,
&FCFS_member[i].Service_time,
&FCFS_member[i].Start_time,
&FCFS_member[i].Completion_time);

//计算周转时间和带权周转时间
FCFS_member[i].Turnaround_time = FCFS_member[i].Completion_time - FCFS_member[i].Arrival_time;
FCFS_member[i].Weighted_turnover_time = (float)FCFS_member[i].Turnaround_time / (float)FCFS_member[i].Service_time;