?
Erstmal zum Passwort:
Konsonant, Vokal,Ziffer,Konsonant, Vokal, Ziffer sind 6 Zeichen.
Die stehen beim Index 0 bis 5. Also kommt an Stelle 6 das Stringendezeichen '\0'
Da das dann ein String ist gibst du es bei printf auch mit %s aus. (nicht %c)
Zum Rest:
Du musst erstmal die Daten der Zeile in eine passende struct laden. Ist ja alles schön durch Kommata getrennt.
Die struct musst du dir selber entwerfen. Dann hast du alle Daten und kannst damit arbeiten.
Am besten die Zeile mit fgets einlesen und dann mit sscanf auswerten.
Dann kannst du mit sprintf leicht den usernamenamen zusammenbasteln
char zeile[1000];
// Diese Teile gehören eigentlich in eine struct.
char vorname[32];
char nachname[32];
char datum[32];
char schule[32];
int nummer;
char username[36];
...
fets(zeile,1000,quelle);
sscanf(zeile, "%i,%31[^,],%31[^,],%31[^,],%31[^,\n]", &nummer, nachname, vorname, datum, schule);
// 121, Schneider, Jan Roland,26.3.1980 00:00:00,BBS MM
sprintf(username, "%s%.3s", nachname, vorname
Der Formatspecifier %31[^,] liest Maximal 31 Zeichen ein, bis ein Komma auftaucht. Das ist nötig, da %s keine Leerzeichen einliest, bzw. dann aufhört.