Seite 1 von 4

[HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 12:40 pm
von Shijury
Hallo liebe Community,
ich programmiere seit kurzem, und wollte jetzt einfach ein stinknormales Abfrageprogramm schreiben.
Man wird nach verschiedenen Dingen gefragt, gibt diese ein und am Ende werden nochmal alle eingegebenen Daten ausgespuckt.
Dann soll das Programm fragen, ob alle Daten richtig sind (Y/N).
Ich wollte das ganze weiterschreiben, das man dann mit N also No, seine Daten nochmal überarbeiten könnte und habe da mit einer If-Else-Funktion angefangen. Die wird aber komischerweise gar nicht eingeleitet. Anstatt das man Y/N eingeben kann, springt er gleich zur Else-Funktion.
Wo sitzt hier der Fehler? Ich verstehe das nicht so ganz... Danke ;)
P.S.: Darunter ist noch das Bild, wie das Programm ausgegeben wird!

Code: Alles auswählen

{
    int alter;
    char name[40], ort[80], strasse[100], nummer[10];
    char c,y;
    
    printf("Hallo in unserem ersten Programm\n\n");
    printf("Es sollen Ihre Daten aufgenommen werden.\n");
    
    printf("Wie ist Ihr Vorname?\n");
     scanf("%s",name);
    
    printf("\nUnd wie alt sind Sie?\n");
     scanf("%d",&alter);
     
    printf("\nIn welchem Ort wohnen Sie?\n");
     scanf("%s",ort);
     
    printf("\nUnd in welcher Strasse wohnen sie?\n");
     scanf("%s",strasse);
     
    printf("\nNennen sie zuletzt noch die Hausnummer.\n");
     scanf("%s",nummer);
     
    printf("Bitte ueberpruefen Sie Ihre Daten noch einmal!\n");
    printf("Sie heissen %s\nsind %d Jahre alt\nwohnen in %s\nin der %s %s.\n\n",name,alter,ort,strasse,nummer);
    printf("Sind Ihre Daten korrekt? (y/n)\n");
     scanf("%c",&c);
     
    if(c==y)
      {
         printf("Herzliches Dankeschoen fuer Ihre Anmeldung.\n");
      }
      
    else {
         printf("Welche Daten moechten Sie ueberarbeiten?\n");
         }
     
         
    system("PAUSE");
    return EXIT_SUCCESS;
}
Bild

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 12:48 pm
von Xin
Shijury hat geschrieben:Hallo liebe Community,
Hallo Neuer, lass mich raten, Du bist der Thomas aus München? ^^
Hobbies und co kannst Du gerne noch in einer Uservorstellung vervollständigen ;-)
Shijury hat geschrieben:Wo sitzt hier der Fehler? Ich verstehe das nicht so ganz... Danke ;)

Code: Alles auswählen

{
    char c,y;
    
    printf("Sind Ihre Daten korrekt? (y/n)\n");
     scanf("%c",&c);
     
    if(c==y)
         printf("Herzliches Dankeschoen fuer Ihre Anmeldung.\n");
    else
         printf("Welche Daten moechten Sie ueberarbeiten?\n");
Du vergleichst den Wert der Variablen c mit dem Wert der Variablen y. Du willst aber den Wert der Variablen c mit dem Wert für das Zeichen 'y' vergleichen:

Code: Alles auswählen

     scanf("%c",&c);
     
    if(c=='y')
Eine Variable mit dem Namen y brauchst Du hier nicht.

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 12:53 pm
von Shijury
Habs jetzt zwar umgeändert, aber er geht trotzdem gleich in die Elseschleife rein... und ein 'y' kann ich gar nicht eingeben weil die scanfzeile auch einfach übersprungen wird...

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 1:05 pm
von Xin
Schau mal hier:

http://www.proggen.org/doku.php?id=c:faq:input-puffer

Im Prinzip sollte es funktionieren, wenn Du scanf() mit gibst, dass es das \n ignorieren soll (die Enter-Taste nach der Eingabe).

Code: Alles auswählen

     scanf("%s\n",name);
Die Enter-Taste liegt sonst noch im Eingabebuffer und wird von scanf( "%c" ) dann ausgelesen - also wartet er nicht.

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 1:08 pm
von Shijury
ok ein weiterer Schritt ist getan xD
jetzt kann ich Y/N eingeben aber er geht trotzdem in die Else rein egal was ich eingebe^^

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 1:11 pm
von Xin
Ein großes 'Y' ist kein kleines 'y'.

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 1:14 pm
von Shijury
hier wohl schon... egal ob ich y/n oder Y/N ausprobier bei allen vier geht er nach ELSE...

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 1:17 pm
von Xin
Shijury hat geschrieben:hier wohl schon... egal ob ich y/n oder Y/N ausprobier bei allen vier geht er nach ELSE...
Du benutzt doppelte Anführungszeichen, ich aber einfache.

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 1:23 pm
von Shijury
hab jetzt mal ALLE Möglichkeiten ausprobiert!
groß, klein, doppelte oder einfache Anführungszeichen.
beim y klappt es jetzt aber bei n zeigt er mir jetzt die IF-Funktion an, was ja falsch ist...

Re: [HILFE]: If-Schleife wird einfach übersprungen

Verfasst: Fr Mär 18, 2011 1:26 pm
von Xin
Shijury hat geschrieben:hab jetzt mal ALLE Möglichkeiten ausprobiert!
groß, klein, doppelte oder einfache Anführungszeichen.
beim y klappt es jetzt aber bei n zeigt er mir jetzt die IF-Funktion an, was ja falsch ist...
Tjoah... könntest Du Deine Kristallkugel einschalten, damit ich sehen kann, wie Dein Code aussieht?