if anweisungen und fehler durch printf
-
So ich bekomm das mit der if anweisung nicht hin, selbst wenn ich 1 eingabe kommt immer else.
2. Problem
Bei einer printf anweisung beendet es sich mit Fehlermeldung "Programm funktioniert nicht mehr"#include <stdio.h> int main() { system("color 0A"); printf("Wilkommen in der Matrix!"); do { fflush(stdin); char eingabe; printf("\nWie lautet ihre Eingabe?\n"); scanf("&s", &eingabe); if (eingabe == 1) /* ist das so korrekt? funktioniert auf jeden fall nicht */ { printf("if") ; } else { printf("else"); } printf("Letzte Eingabe: %s", eingabe ); /* Hier kommt fehlermeldung "programm funktioniert nicht mehr und wird beendet" */ system("pause"); } while ( 1>0 ); return 0; }
-
In C gibt es einen sehr großen Unterschied zwischen einzelnen Zeichen (char) und Zeichenketten (char[]).
Mit %s liest du bei scanf Zeichenkette ein, bzw. gibst sie bei printf auch aus.
Was willst du denn eingeben/einlesen?
Eine Zahl oder ein Zeichen?Das
if (eingabe == 1)
ist in diesem Fall korrekt, da eingabe ein char ist.Und Formatspecifier fangen mit % an.
-
#include <stdio.h> int main() { system("color 0A"); printf("Wilkommen in der Matrix!"); // fehlt da nicht ein "l"? do { fflush(stdin); // nutzt du den Compiler bei dem das in der Doku steht? sonst undefinierte Ergebnisse! char eingabe; printf("\nWie lautet ihre Eingabe?\n"); scanf("&s", &eingabe); // Du gibst eine Ziffer ein? Schau: "scanf format" if (eingabe == 1) /* ist das so korrekt? funktioniert auf jeden fall nicht */ { printf("if") ; } else { printf("else"); } printf("Letzte Eingabe: %s", eingabe ); /* Hier kommt fehlermeldung "programm funktioniert nicht mehr und wird beendet" */ system("pause"); } while ( 1>0 ); return 0; }
Schau dir diesen Beitrag auch gründlich an:
http://www.c-plusplus.net/forum/294013
Da sind auch noch Infos zu scanf().Mit dem Formatieren des Quelltextes musst du noch ein wenig üben
MfG f.-th.
-
Warum führt Zeile 22 zu einem Absturz des Programms?
-
arcanis schrieb:
Warum führt Zeile 22 zu einem Absturz des Programms?
Weil printf bei %s einen Zeiger auf eine Nullterminierte Zeichenkette erwartet (char*) du aber ein char übergibst.
Ändere mal folgende Zeilen, die findest du schon. Alle drei.
int eingabe; ... scanf("%d", &eingabe); ... printf("Letzte Eingabe: %d", eingabe );
-
ich möchte aber auch Buchstaben eingeben können
-
Dann nimm
int eingabe; ... scanf("%c", &eingabe); ... if (eingabe == '1') ... printf("Letzte Eingabe: %c", eingabe );
Und lies auch mal bei http://www.c-plusplus.net/forum/294013 rein.
Nimm dein/ein C-Tutorial und mach dir den Unterschied zwischen 1 , '1' und "1" klar.
1 ist eine Ganzzahl wie auch -12 oder 4711.
'1' ist ein Zeichen wie auch 'A' oder '+' oder '\n'.
"1" ist eine Zeichenkette wie auch "Hallo Welt!" oder "Lies ein C-Buch".Variablentypen für Ganzzahlen und Zeichen sind int, char, long oder short.
Zeichenketten werden als Array von char angegeben und ganz anders behandelt.
-
ich möchte eine zeichenkette einlesen und auch wieder ausgeben.
komme aber nicht drauf wie das zu bewerkstelligen ist#include <stdio.h> int main() { int eingabe; printf("Wie lautet ihre Eingabe?\n"); scanf ( "%s" , &eingabe ); printf ("\n%s", eingabe); system("pause"); return 0; }
printf ("\n%s", eingabe);
führt immer zum absturz
mit zahlen (also wenn ich %s mit %d ersetze) klappt alles
-
Wenn du eine Zeichenkette (mit %s) einlesen willst, musst du auch Speicherplatz für eine Zeichenkette bereitstellen.
#include <stdio.h> int main() { char eingabe[80]; // Platz für 79 Zeichen + '\0' printf("Wie lautet ihre Eingabe?\n"); scanf ( "%79s", eingabe); // Dass da kein & steht ist hier richtig printf ("\n%s", eingabe); system("pause"); return 0; }
-
thx
klappt