循环

时间:2017-07-27 15:52:15

标签: c validation input user-input

我有一个程序,要求用户记录学生的姓名和成绩。我使用的功能之一是用户编辑学生的记录。代码可以工作,但现在我正在摸索的是如何实现用户输入的验证。我试过搜索,但我找不到我需要的确切答案。

我已经实现了第一次验证并且它可以正常工作,但是现在我想要的第二次验证是返回并再次询问而不是打破循环。

这是我的代码:

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;
        }
    }

}

0 个答案:

没有答案