>>105
うーん、そのように修正してもダメでした。

どうやらmainの上のほうの
for(i=0; i<NUMBER; i++){
 if(fgets(p[i].all, LINE_SIZE, fp) == NULL)
  break;
でbreakが実行されてしまうみたいなんですがどうしてでしょうか?