IF - Verzweigung (Problem)



  • hey leute

    ich versuche grade eine Eingabenüberprüfung zu lernen und hab da schon was kleines und schnelles programmiert. Leider sind da ein paar Fehler drin die ich nicht so ganz verstehe. Könnt ihr mir sagen was ich hier falsch gemacht habe und mir erklären was und warum es falsch ist und ob es leichter , einfacher etc geht?

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {

    int a, ok;
    char test;

    printf("Geben Sie eine Zahl ein! ");
    ok = scanf("%d%c", &a, &test);

    if (ok == 2 && test == '\n');
    {
    printf("richtige Eingabe! ");
    }
    else
    {
    printf("falsche Eingabe! ");
    }

    system("PAUSE");
    return 0;
    }

    Dev ++ 4.9.9.2
    Sprache C

    probleme sollen bei "else" und bei "definition no type or storage class"



  • Das Semikolon am Ende der Zeile mit dem if() ist verkehrt.



  • Also einen Fehler hast du auf jeden Fall nach der If-bedingung.
    Das Semikolon gehört hier nicht hin.

    Dann würde ich dir empfehlen nach jeder Ausgabe auf der Konsole (also nach jedem string bei printf) ein "\n" einzufügen.
    Somit hast du den Text untereinander und das sieht ordentlicher aus als wenn alles in einer Zeile steckt!

    printf ("Hallo Welt \n");
    

  • Mod

    Oder gleich puts statt printf.

    Beachte in Zukunft bitte auch wie man seinen Beitrag lesbar formatiert.



  • hay

    vielen Dank. Ich habe das Semikolon entfernt und \n etwas öfters eingesetzt. Leider kommt ein Fehler, wenn ich den Code compilieren möchte. Der Fehler lautet : "Project is not compiled." Auch bei wiederhohlten male es zu compilieren taucht dieser Fehler auf. Es gibt keine andere Fehlermeldung was mich verwirrt. Habt Ihr einen Tipp für mich?



  • puts statt printf?
    was heißt das? was bringt das? vor- nachteile?


  • Mod

    Ely schrieb:

    vielen Dank. Ich habe das Semikolon entfernt und \n etwas öfters eingesetzt. Leider kommt ein Fehler, wenn ich den Code compilieren möchte. Der Fehler lautet : "Project is not compiled."

    Zeig Code!

    Ely schrieb:

    puts statt printf?
    was heißt das? was bringt das? vor- nachteile?

    printf ist eine von vielen Funktionen zur Ausgabe von Zeichen. puts ist eine andere. printf ist sehr mächtig und kann so ziemlich alle Arten von Daten in allen möglichen Formaten ausgeben, ist aufgrund dieser Komplexität aber auch etwas träge. puts kann nur Zeichenketten ausgeben und schließt diese automatisch mit einem Zeilenumbruch ab. Also genau das, was du hier möchtest. Das kann man zwar auch mit printf machen (denn printf kann wie gesagt so ziemlich alles), aber puts macht es genau so gut und macht auch nichts anderes, dürfte daher in aller Regel deutlich flotter sein. außerdem kann und sollte man sich angewöhnen, immer die passendste Funktion zu benutzen, anstatt jedes mal mit der größten Kanone auf den Spatzen zu schießen.

    Ein guter Compiler könnte in diesem Fall übrigens in der Lage sein, zu erkennen, dass dein printf nur eine Zeichenkette mit '\n' am Ende ausgibt und somit den printf-Aufruf intern zu einem puts optimieren. So dass es letztlich keinen Unterschied machen wird. Und natürlich würde man in diesem Miniprogramm mit seinen 2-3 Ausgaben sowieso überhaupt nichts von alledem merken. Aber nichts davon sollte ein Grund sein, es nicht trotzdem richtig zu machen.


Log in to reply