getc
-
Hallo,
ich möchte nur Buchstaben in Groß- und Kleinschrift eingeben lasse. Falls etwas anderes eingegeben wird, soll das Programm beendet werden.Hier der Code:
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { char szBuffer[256]; int iLoop = 0; do { szBuffer[iLoop] = getc(stdin); printf("Input: %c \n", szBuffer[iLoop]); ++iLoop; } while(szBuffer[iLoop - 1] > 65 && szBuffer[iLoop - 1] < 90 ||szBuffer[iLoop - 1] > 97 && szBuffer[iLoop - 1] < 122); return 0; }
Nur spinnt das Programm etwas rum (nach der Eingabe). Ist ja jetzt nicht unbedingt langer Code, deswegen erspare ich mir eine weitere Erklärung, wurde ja alles gesagt.
Wäre super nett wenn mir einer helfen könnte.
Vielen Dank im Voraus!
-
1. Klammern?
2. http://www.cplusplus.com/reference/clibrary/cctype/
Edit: 3. conio.h? Was ist denn das?
-
Okay, Danke. Was ist mit den Klammern? Und ja, conio.h ist noch wegen [i]getch()[i] drin.
Würde es gerne ohne direkte Umwege so lösen. Notlösung wäre dann dein vorgeschlagener Tipp...
-
gibts nicht sowas wie isupper bzw. islower?
-
Warum benutzt du nicht isalpha() aus <ctype.h>?
Und auch sonst kannst du statt 65 besser 'A' schreiben.
-
Und ein szBuffer[iLoop] = 0; nach der Schleife wäre auch nicht schlecht.
-
Außerdem müsste es >= 97 und nicht > 97 heißen, sonst entgeht dir das kleine "a"
-
Das meinte ich mit Klammern:
if ((c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A))
-
DirkB schrieb:
Warum benutzt du nicht isalpha()
oh man, bin ich eingerostet... das kommt davon wenn man sich länger nicht mit c beschäftigt