Telefonbuch HILFE :( "Programm muss beendent werden!"
-
Hi Leute,
ich will gerade ein Programm schreiben das wie ein Telefonbuch aufgebaut ist bloss das man selber noch Einträge hinzufügen, löschen kann, wie eben in einem Handy. Ich wollte jetzt eine Bestätigungsroutine inplementieren aber ich krieg das nich gebacken.
#include <iostream.h> #include <stdio.h> int main() { char Namen[100]; int auswahl; char *JaNein = NULL; printf("Willkommen Cl0v3r in deinem Telefonbuch\n\n"); printf("\t\tAnleitung\n\n"); printf("0 = Programm Beenden\n"); printf("1 = Name und Nummer speichern\n"); printf("2 = Suche nach Name\n"); printf("3 = Suche nach Nummer\n"); scanf("%d", &auswahl); if(auswahl == 0) printf("Das Programm wird beendet!\n"); if(auswahl == 1) { printf("Du hast Wahl 1 getroffen!\n\n"); printf("Bitte gebe den Namen ein.\n"); fflush(stdin); fgets(Namen, sizeof(Namen), stdin); printf("Ist der Name\n%sso richtig geschrieben? j/n\n", Namen); //fflush(stdin); //fgets(JaNein, sizeof(JaNein), stdin); scanf("%c", JaNein); if(JaNein == "n") printf("Nochmal den Namen eingeben!\n"); printf("Ich brauche jetzt die Nummer von %s.\n", Namen); } return 0; }
Bis dahin habe ich es erstmal geschrieben um zu gucken ob es bis dahin funktioniert. Leider kriege ich es nicht hin das er einen Buchstaben in ín die char Variable JaNein aufnimmt. Eigentlich müsste er doch einen Buchstaben speichern können und in mit scanf() von der Tastatur einlesen oder nicht? Aber wenn ich jetzt das Programm starte und er zur Eingabe kommt sagt mir Windows das ein Fehler aufgetreten sei und das Programm beendet werden müsse.
Kann mir bitte einer helfen? Bin schon verzweifelt.
Danke
Cl0v3rEDIT: Okay ich habs jetzt hingekriegt das er den Buchstaben ohne Fehler einliest und zwar so:
char Namen[100]; int auswahl; char JaNein[1]; printf("Willkommen Cl0v3r in deinem Telefonbuch\n\n"); printf("\t\tAnleitung\n\n"); printf("0 = Programm Beenden\n"); printf("1 = Name und Nummer speichern\n"); printf("2 = Suche nach Name\n"); printf("3 = Suche nach Nummer\n"); scanf("%d", &auswahl); if(auswahl == 0) printf("Das Programm wird beendet!\n"); if(auswahl == 1) { printf("Du hast Wahl 1 getroffen!\n\n"); printf("Bitte gebe den Namen ein.\n"); fflush(stdin); fgets(Namen, sizeof(Namen), stdin); printf("Ist der Name\n%sso richtig geschrieben? j/n\n", Namen); scanf("%c", JaNein); if(JaNein == "n") printf("Nochmal den Namen eingeben!\n"); printf("Ich brauche jetzt die Nummer von %s.\n", Namen);
Aber jetzt vergleicht er die Buchstaben nicht in der if-Anweisung. Kann mir einer sagen wieso er das macht und wie ich das villeicht beseitigen könnte?
Danke
Cl0v3r
-
Aber jetzt vergleicht er die Buchstaben nicht in der if-Anweisung. Kann mir einer sagen wieso er das macht und wie ich das villeicht beseitigen könnte?
Warum benutzt du wenn du nur ein Byte speichern willst ein char JaNein[1] und nicht einfach char JaNein?
Wenn du aus
char JaNein[1];
ein
char JaNein;
machst, kannst du es in der If-Bedingung so abfragen:
[cpp]
if(JaNein == 'n')
....
[/cpp]
wichtig hierbei sind die einfachen Anführungszeichen! (Die doppelten sind für strings vorbehalten.)Ansonsten Arrays kannst du so nämlich nicht vergleichen.
wenn dann so:// Wenn JaNein ein char [], was aber imho sinnlos ist. if(strcmp(JaNein), "n") == 0) ...
/edit: Natürlich musst du, wenn du ein char einliest scanf() etc. anpassen.
Caipi
-
Hi,
also wenn ich jetzt scanf() benutze und einfach kein Array, kommt bei mir das selbe wie vorher dabei heraus. Wenn ich einen Buchstaben eingebe sagt er mir das ein Fehler aufgetreten sei und das das Programm beendet werden müsse.
Habe das jetzt so gemacht aber funktionieren tut das nicht...was meinst du eigentlich mit ich mus scanf() anpassen?char JaNein; // warning: JaNein wurde ohne Initialisierung verwendet? printf("Ist der Name\n%sso richtig geschrieben? j/n\n", Namen); scanf("%c", JaNein); if(JaNein == 'n') printf("Nochmal den Namen eingeben!\n");
Cl0v3r
-
Die Zeile
scanf("%c", JaNein);
muss so lauten,
scanf("%c", &JaNein);
da scanf() die Adresse der entsprechendn Variablen benötigt.
Caipi
-
JA NATÜRLICH!
Dickes THX hat gefunzt *freu*
.
Bisch dann
Cl0v3r