fgetsは処理ごとにメモリが動くので、一様な使い方ができません。
どのように切り抜けるか知っていますか。下記例。

#include<stdio.h>

int main(){
FILE *fp;
char a[256];
char *b[4];
char *c,*d;
int i;

if((fp=fopen("address.dat","r"))==NULL)exit(1);

c=fgets(a,256,fp);
printf("%s",c);
d=fgets(a,256,fp);
printf("%s",d);

fclose(fp);
}


これを
c=fgets(a,256,fp);
d=fgets(a,256,fp);
printf("%s",d);
printf("%s",c);

のような順序にすると同じ値が出てしまいます。(1行目が消えて、ファイルの2行目の出力になる)