myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [C] Eingabeüberprüfung funktioniert nicht (https://mygully.com/showthread.php?t=2766400)

PwN0GrPhy 01.12.12 16:44

[C] Eingabeüberprüfung funktioniert nicht
 
Moin,
ich bin gerade dabei etwas C zu üben. Das Übungsbeispiel an sich hab ich schon, jedoch fehlt mir eine funktionierende Eingabeüberprüfung.
Ich habs so gemacht
Code:

 
    char ok;   


    printf("Bitte geben Sie ihr ein Einkommen ein: ");

ok=scanf("%d", &e);

 
if(ok => 'a' && ok <= 'z'){

    printf("Falsche Eingaabe");

    }else....

Es muss eine Zahl eingelesen werden, wenn etwas anderes als eine Zahl eingelesen wird sollte die Fehlerausgabe kommen.

MfG

Your_Conscience 01.12.12 18:09

In deinem "ok" wird nicht die Eingabe gespeichert, es macht also keinen Sinn dies zu überprüfen.
So wird ein Schuh draus:
Code:

        int ok;
        char *e;

        printf("Bitte geben Sie ihr ein Einkommen ein: ");
        ok = scanf("%d", &e);

        if (ok != 1) {
                printf("Falsche Eingabe");
        }


PwN0GrPhy 01.12.12 18:40

Danke.
So funktionierts

d03jo4n 02.12.12 14:26

Hey PwN0GrPhy,

kleiner Tipp am Rande:
Wenn du umfangreicher mit C programmieren möchtest, solltest du - vor allem aus Sicherheitsgründen - mit der Benutzung der Funktion scanf aufpassen.

Du kannst zum Beispiel eine andere Funktion wie fgets() benutzen oder die im folgenden Artikel benutze Methode zur Absicherung anwenden:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Your_Conscience 02.12.12 15:12

Er kann auch einfach "scanf_s" benutzen.

slahn 02.12.12 15:22

Naja, aber das Umformatieren in eine Zahle bleibt ihn ja trotzdem nicht erspart ... fgets() macht bei reinen Strings Sinn ... aber wenn ich will dass der Nutzer eine Zahl eingibt eher nicht ...

man sollte aber scanf() nicht verwenden ohne den Rückgabewert zu überprüfen ... scanf() gibt immer die Anzahl der korrekt gelesenen und formatierten Elemente/Argumente zurück.

Edit: scanf_s() gibts aber nur beim MSVC ... und ist somit für Platformunabhängige Programme eher nutzlos und nicht zu empfehlen ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.