Danke dir, ja das habe ich jetzt noch gemacht, aber das eigentliche Problem ist, dass wenn ich mehrere "Datensätze eingebe, nur beim ersten Vor, sowie Nachname der erste Buchstabe groß geschrieben wird. Er verändert die kleinzuschreibenden Wörter gar nicht und bei den folgenden Vor und Nachnamen gar nichts.
Ich sehe das Problem.
Es fehlt dir an grundlegendem Verständnis von Feldern, weshalb es nicht sehr sinnvoll ist, dir die Lösung direkt zu geben.
"Felder" oder Arrays sind schlicht eine andere Schreibweise für viele Variablen.
C:
char a[2];
//dasselbe wie (aber natürlich nur semantisch, du kannst einen Array nicht mit '_' indizieren.
char a_0;
char a_1;
Was du nun brauchst sind "2-dimensionale Arrays". Diese sind eigentlich Beschiss: Denn wenn man es sich genau überlegt, sind Arrays ja so aufgebaut:
C:
char a[2][3]; //Ich würde hier von aussen nach innen gehen: char[3] in einem Array der Grösse 2:
/* 0 1 2
a[0]: * * *
a[1]: * * *
Man sieht: Das könnte man auch als char[6] schreiben:
a[0]: *
a[1]: *
a[2]: *
a[3]: *
a[4]: *
a[5]: *
Und der Zugriff a[1][2] ist somit semantisch nichts anderes als a[1*3 + 2] (syntaktisch ist das aber falsch für char[][]!)
*/
Es ist nun so, dass aus Optimierungsgründen der rechteste Index am häufigsten, der linkeste am seltensten geändert/benutzt werden sollte. Siehe dazu Cachelines / Pages. Umgekehrt ist zwar semantisch auch korrekt, aber sehr viel langsamer.
In deinem Beispiel hat du schon richtig den rechteren Index für die Strings, den linken Index für die einzelnen Namenseinträge verwendet. In deinem Code jedoch verwechselst du die Indizes, nicht beim Indizieren selbst, sondern beim Prüfen, ob es der erste Buchstabe (vgl. mit "erster Eintrag") ist.
(Daher sollte man Code nicht einfach direkt kopieren... :-])
C:
for (size_t i = 0; i < 100; i++)
{
for (size_t j=0; j<10; j++)
{
char& ref = Vornamen[i][j];
if (i == 0) ref = toupper(ref);
else ref = tolower(ref);
}
}
Gruss
cwriter
/EDIT: Ah, du hast es schon gefunden
(aber nur bei den Vor- nicht aber bei den Nachnamen)