#include<stdio.h>

main()
{

FILE *fp;
char *p;
char s[500];
char n[100];

puts("ファイル名を入力してください");
gets(n);

fp=fopen(n,"r");

while(p!=NULL)
{
p=fgets(s,500,fp);

printf("%s",s);

}
fclose(fp);
}

画面からgetsでファイル名を入力しそれを表示させるプログラムなんですが
だぶって表示されてしまいます。(同じ内容が2回表示される)

このプログラムでのfgetの動きについて教えてください