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();
}
Я хочу подробное объяснение этому, кто-нибудь может мне помочь?