C: gets () überspringt die erste Eingabe [closed]

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


typedef struct record
{   
    char name[20];
    char surname[20];
    char telephone[20];

}Record;

typedef struct node
{
    Record data;
    struct node *next;
}Node;

Node *head = NULL;

void addRecord(Record s)
{
    Node *newNode;
    Node *n;

    newNode = (Node*)malloc(sizeof(Node));
    newNode->data = s;
    newNode->next = NULL;

    if (head == NULL)
    {
        // The linked list is empty
        head = newNode;
    }
    else
    {
        // Traverse the whole list until we arrive at the last node
        n = head;
        while (n->next != NULL)
        {
            n = n->next;
    }
        n->next = newNode;
    }
}

Record enterRecordDetails()
{
    Record aRecord;
    int len;
    int valid = 0;
    int valid2 = 0;
    printf("ENTER THE FOLLOWING RECORD DETAILS:\n");

    printf("   NAME      : ");
    gets(aRecord.name);
    printf("   SURNAME   : ");
    gets(aRecord.surname);  
    do {
        valid = 0;
        valid2 = 0;
        printf("  TELEPHONE NO. (8 digits): ");
        gets(aRecord.telephone);
        len = strlen(aRecord.telephone);
        for (int i = 0; i < len; i++)
        {
            if (!isdigit(aRecord.telephone[i])) {
                printf("You enterred an invalid number\n");
                valid = 1; break;
            }
        }
        Node *p = head;         
            while (p != NULL)
            {
                Node *next = p->next;
                for (; next; p = next, next = next->next) {
                    if (strcmp(p->data.telephone, aRecord.telephone) == 0)
                    {
                        valid2 = 1; break;
                    }
                }
                if(p = NULL)break;
            }

    } while((valid == 1) || (len != 8) || (valid2 == 1));
    getchar();
    fflush(stdin);
    return aRecord;
}


int main(void)
{
    char menuOption;

    do
    {
        system("cls");
        printf("~~~ MAIN MENU ~~~\n");
        printf("1. Add Telephone Record\n");
        printf("2. Delete Telephone Record\n");
        printf("3. Search\n");
        printf("4. Display All Records\n");
        printf("5. Exit\n\n");
        menuOption = getchar();
        fflush(stdin);
        switch (menuOption)
     {
    case '1':
        addRecordToList();
        break;
    case '4':
        displayList();
        break;
    }

} while (menuOption != '5');

getchar();
return 0;

}

Beim Hinzufügen eines Schülers fordert der Computer den Benutzer auf, den Nachnamen und nicht den Namen einzugeben. Warum überspringt das Programm "Name"? 'Name' wird angezeigt, es wird jedoch erwartet, dass der Benutzer stattdessen den Nachnamen schreibt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage