Großbuchstaben überprüfen in C!

Aber wie würde das mit der isupper Funktion funktionieren? Ich hab mir so überlegt ich mach eine do while schleife und lasse am schluss überprüfen "while (isupper(char String)==0);"
dann läuft ja die schleife solange bis man nur großbuchstaben eingibt oder? Jedoch ist mein Problem das die isupper Funktion nur die Parameter 'int' akzeptiert. So meine Frage wie soll ich dann den String mit isupper überprüfen wenn die Parameter nur 'int Variablen (Zahlen)" sind?

C++:
char per1[61] = "";
do{
				printf("a: ");
				fgets(per1, sizeof(per1), stdin);
				zahl = strtol(per1, &eptr, 10);
				size1 = strlen(per1);
			} while (isupper(per1) == 0);
 
Hallo,

du kannst doch einfach den char in ein int casten. Binär gesehen ist ein char ja nichts anderes als ein int mit weniger Bytes, dessen Anzahl aber ausreicht um den ASCII-Zeichensatz darzustellen.

C++:
isupper(int(per1))
 
Hallo,

das liegt daran, dass ein char auch eine Zahl zugewiesen werden kann. Dh. dass char c = 'A'; gleich char c = 65; ist. Die Funktion überprüft nur ein einzelnes Zeichen, deshalb nimmt die Funktion auch nur einen int-Wert an.

Du könntest meinen Beispielcode verwenden, um zu ermitteln ob der eingegebene String nur Großbuchstaben entählt. Ansonsten kannst du auch dieses Beispiel verwenden: http://www.cplusplus.com/reference/cctype/isupper/
 
Hallo @Jannesta,

wenn ich den char in ein int caste bekomme ich einen Debugfehler und das Programm stürzt ab "Debug Assertion Failed!"

Hallo @Hunter,
Ich weiß nicht wie ich den Beispielcode in meinem Programm anwenden soll und die Funktion die du mir per link geschikt hast macht statt aus dem String "Test String" --> "test string" in wiefern soll mir das weiter helfen?
 
Du willst ja, dass der eingegebene String nur Großbuchstaben entählt, somit kannst du meinen Besipielcode gleich nach der Eingabe verwenden und somit überprüfen lassen ob der String nur Großbuchstaben entählt. Wenn istGross gleich 0 ist, dann sind nur Großbuchstaben im String.
Das Beispiel von der Seite könntest du dann verwenden, wenn du die Kleinbuchstaben einfach in Großbuchstaben umwandeln willst.

Hier mal ein Beispiel wie du die isupper-Funktion nutzen kannst:
C++:
char *string = "HALLO";
if(isupper(string[0]))
    ... //Hier geht dein Code weiter
 
So müsste sich die do while schleife solange wiederholen bis ich es großgeschrieben eingegeben habe nach meinen vorstellungen oder hab ich da etwas falsch verstanden?

C++:
do{
				printf("a: ");
				fgets(per1, sizeof(per1), stdin);
				zahl = strtol(per1, &eptr, 10);
				size1 = strlen(per1);

				for (i = 0; i < strlen(per1); i++) {
					for (j = 65; j <= 90; j++) {
						if (per1[i] != j) //Überprüfe ob string[i] gleich einem Großbuchstaben ist
							istGross++; //Wenn nicht, dann istGross++
					}
				}
			} while (istGross == 0);
 
Jedoch wenn ich "(istGross != 0);" als Bediengung habe wiederholt sich die Eingabe 'a:' immer wieder wie eine Endlosschleife...
 
wie bist du denn auf das gekommen? außerdem kommt noch immer wieder die Eingabe 'a:' wie vorher, es ist wie verhext
 
Zurück