Frage von Rawwi, 44

Kann mir jemand sagen wieso dieses Programm nicht läuft?

Es soll eine Namenstreppe erstellt werden in der in jeder Zeile ein weiterer Buchstabe des gewünschten Namens hinzukommt. Bei mir stürzt das Programm leider ab und ich finde den Fehler nicht. Vielen Dank im Voraus!

Viele grüße

int main()
{

char name[] = "Max Mustermann";
int i;

for (i=0;name[i]!= '\0';i++)
{
    printf ("%s\n", name[i]);
}

getch();
return(0);

}
Antwort
von ralphdieter, 12
printf ("%s\n", name[i]);

%s erwartet einen char*, aber Du übergibst nur einen einzelnen char. Da sollte es %c heißen.

Mit "gcc -Wformat" wird sowas schon beim Compilieren bemängelt.

Antwort
von maximilianus7, 23

%s erfordert einen pointer (adresse) auf einen null-terminierten string. name[i] liefert aber einen wert der einem der zeichen "Max M.." entspricht, gleich bei i=0, also "M", entspr. 77 (oder so), das ist keinensfalls eine dem prozess zugewiesene Adresse.

wie ist die fehlermeldung? speicher-zugriff/schutz-verletzung?  

Kommentar von Rawwi ,

Danke für die schnelle Antowrt! Das Programm öffnet sich zwar aber stürzt direkt wieder ab. Fehlermeldung: main.exe funktioniert nicht mehr.

Kommentar von maximilianus7 ,

hast du, wenn ja - was, geändert? wenn nein, warum nicht? 

Keine passende Antwort gefunden?

Fragen Sie die Community