myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[C] Eingabeüberprüfung funktioniert nicht

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 01.12.12, 16:44   #1
PwN0GrPhy
Newbie
 
Registriert seit: Oct 2011
Beiträge: 41
Bedankt: 6
PwN0GrPhy ist noch neu hier! | 0 Respekt Punkte
Standard [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
PwN0GrPhy ist offline   Mit Zitat antworten
Ungelesen 01.12.12, 18:09   #2
Your_Conscience
Hinter dir!
 
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
Your_Conscience ist noch neu hier! | 0 Respekt Punkte
Standard

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");
	}
Your_Conscience ist offline   Mit Zitat antworten
Ungelesen 01.12.12, 18:40   #3
PwN0GrPhy
Newbie
 
Registriert seit: Oct 2011
Beiträge: 41
Bedankt: 6
PwN0GrPhy ist noch neu hier! | 0 Respekt Punkte
Standard

Danke.
So funktionierts
PwN0GrPhy ist offline   Mit Zitat antworten
Ungelesen 02.12.12, 14:26   #4
d03jo4n
OS X'ler
 
Benutzerbild von d03jo4n
 
Registriert seit: Aug 2012
Ort: /dev/random
Beiträge: 40
Bedankt: 8
d03jo4n ist noch neu hier! | 0 Respekt Punkte
Standard

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 Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
__________________
Ghost hardware.
d03jo4n ist offline   Mit Zitat antworten
Ungelesen 02.12.12, 15:12   #5
Your_Conscience
Hinter dir!
 
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
Your_Conscience ist noch neu hier! | 0 Respekt Punkte
Standard

Er kann auch einfach "scanf_s" benutzen.
Your_Conscience ist offline   Mit Zitat antworten
Ungelesen 02.12.12, 15:22   #6
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

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 ...
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 Uhr.


Sitemap

().