void menu() {
    int op;
    printf("\n Choose a option from below : \n\n");
    printf(" 1: Add Contact\n"
           " 2: View A Contact\n"
           " 3: View All Contacts\n"
           " 4: View All Contacts With a Common First Character\n"
           " 5: Delete All Contact\n"
           " 6: Delete A Contact\n"
           " 7: Replace A Contact Name\n"
           " 8: Replace A Contact Number\n"
           " 9: Refresh\n"
           " 10: Exit\n\n");
    printf(" Which one ? ");
    fgets(op, 5, stdin);
    switch ((int)op) {
    case 1: addrecords(); break;
    case 2: viewone(); break;
    case 3: viewall(); break;
    case 4: viewonechar(); break;
    case 5: deleteall(); break;
    case 6: deleteone(); break;
    case 7: replaceone(); break;
    case 8: replaceonenumber(); break;
    case 9: refresh(); break;
    case 10: exit(0); break;
    default:
        printf ("\n Wrong Option.\n\n");
        menu();
        break;
    }
}
void addrecords() {
    char name[50];
    char number[20];
    printf("\n\n Enter Contact Number (+880) : "); //Skips this
    fgets(number, 20, stdin);
    check(number);
    printf(" Enter Contact Name : "); //Comes in here
    fgets(name, 50, stdin);
    fp = fopen("Phonebook.txt","a");
    fprintf(fp, "%s %s\n", name, number);
    fclose(fp);
    printf("\n Contact Successfully Saved!\n Returning To Main Menu...\n\n");
    menu();
}
void check(char n[20]) {
    char name[25];
    char ncheck[20];
    fp = fopen("Phonebook.txt", "r");
    fscanf(fp, "%s %s", name, ncheck);
    while (!feof(fp)) {
        if ((strcmp(ncheck, n)) == 0) {
            printf ("\n Contact Already Exists.\n\n");
            fclose(fp);
            menu();
        } else {
            fscanf (fp, "%s %s", name, ncheck);
        }
    }
}
Okay I edited my program. After I enter 1, the program says wrong option. But I am entering the write one. Though I am doing it right, why is the program showing wrong option? Is it something with fgets? What's the problem now?
 
     
    