Das vermute ich auch.
Du kannst mit fflush Eingabeströme nicht "säubern", zumindest nicht verlässlich. Laut Standard erzeugt fflush, wenn es auf Eingabeströme wie stdin angewendet wird, undefiniertes Verhalten. Es gibt Compiler - zum Beispiel von Microsoft -, bei denen bewirkt es ein Leeren des Stroms, aber in deinem Fall ist es wohl nicht so.
Du kannst in C den Eingabepuffer so löschen:
setvbuf(stdin,NULL,_IONBF,0);
setvbuf(stdin,NULL,_IOFBF,BUFSIZ);[/code]
Ein weiteres Problem ist, dass du versuchst, sechs Datensätze in ein Array zu packen, das nur fünf Elemente hat. Die gültigen Indizes für dein Array sind 0 bis 4, nicht 0 bis 5.
Und gets ist böse. Nimm fgets.