我有一个程序,要求用户记录学生的姓名和成绩。我使用的功能之一是用户编辑学生的记录。代码可以工作,但现在我正在摸索的是如何实现用户输入的验证。我试过搜索,但我找不到我需要的确切答案。
我已经实现了第一次验证并且它可以正常工作,但是现在我想要的第二次验证是返回并再次询问而不是打破循环。
这是我的代码:
void update(struct data list[80], int num)
{
int count, tmp, rolltmp, option;
system("cls");
while(tmp < 1 || tmp > num)
{
printf("How many student records do you want to edit?: ");
scanf("%d",&tmp);
if(tmp >=1 && tmp <=num)
{
printf("\nEditing the Student Record: ");
for(count=0;count<tmp;count++)
{
printf("\nEnter Roll Number for Student #%d: ",count+1);
scanf("%d",&rolltmp);
if(rolltmp >=1 && rolltmp <= num)
{
fflush(stdin);
printf("\n[CHOICES]");
printf("\n[1] - Edit the Name\n[2] - Edit the Grade\n[3] - Edit Both Name and Grade");
printf("\nEnter Choice: ");
scanf("%d",&option);
switch(option)
{
case 1:
fflush(stdin);
printf("\nEnter New Name: ");
gets(list[rolltmp-1].name);
break;
case 2:
printf("\nEnter New Grade: ");
scanf("%d",&list[rolltmp-1].grades);
break;
case 3:
fflush(stdin);
printf("\nEnter New Name: ");
gets(list[rolltmp-1].name);
fflush(stdin);
printf("\nEnter New Grade: ");
scanf("%d",&list[rolltmp-1].grades);
break;
}
}
else
{
printf("\nNot Valid. Please enter from 1 to %d\n",num);
printf("Press any key to enter again...\n\n");
getch();
break;
}
}
}
else
{
printf("Not Valid. Please enter from 1 to %d",num);
getch();
break;
}
}
}