gets() не принимает ввод в C

Итак, я пишу этот простой кусок кода, и я только начинающий в C. Этот код компилируется и запускается, как и ожидалось, но когда я добираюсь до точки, где я должен ввести адрес, этот код просто пропускает ввод, но когда я использую Scanf в этом месте код работает отлично, кто-нибудь может мне помочь?

ИСТОЧНИК

#include<stdio.h>
#include<conio.h>

void main()
{
    struct student
    {
        int rn;
        long int phn;
        char name[50];
        char add[50];
    }s;

    char ans, filename[15];

    FILE *fp;
    printf("\n Enter File Name : ");
    gets(filename);
    fp=fopen(filename, "w");

    again:
    printf("\n Enter a name of a student : ");
    gets(s.name);
    printf("\n Enter his roll number : ");
    scanf(" %d ", &s.rn);
    printf("\n Enter his address : ");
    gets( s.add);
    printf("\n Enter his phone Number : ");
    scanf("%ld", &s.phn);
    fprintf(fp, "%s\t%d\t%s\t%ld\n", s.name, s.rn, s.add, s.phn);
    printf("\n Want to keep next record ? : ");
    fflush(stdin);
    scanf("%c", &ans);
    if(ans=='y'||ans=='Y')
    goto again;
    fclose(fp);
    getch();
}

Я хочу подробное объяснение этому, кто-нибудь может мне помочь?

0 ответов

Другие вопросы по тегам