char als immer groß definieren

Hier gehts um die schöne Sprachen C und C++
Antworten
Benutzeravatar
BlackDevil
Null-Leiter
Beiträge: 407
Registriert: Samstag 15. Oktober 2005, 15:38
Kontaktdaten:

char als immer groß definieren

Beitrag von BlackDevil » Sonntag 18. November 2007, 12:50

Servus

ich hab folgendes stehen

Code: Alles auswählen

char op;

cin >> op;

cout << op;
Mein Code is nur etwas größer deshalb hier mal die Kurzversion!

ich möchte nun folgendes erreichen:

Code: Alles auswählen

Eingabe:       Ausgabe:
    x                  X
    X                  X
möchte also erreichen das egal was ich eingeb das ganze in der Variable als groß gespeichert wird. Das machts einfach als zu Prüfen ob der Deppe Benutzer das jetz groß oder klein geschrieben hat und egalisiert das ganze zusätzlich (is eleganter).

Uppercase soll das wohl machen aber mein MS Visual C++ meckert das das mit einem Char nich geht ^^

Hat jemand eine idee?

Wanderer
Null-Leiter
Beiträge: 606
Registriert: Dienstag 27. Dezember 2005, 11:23
Wohnort: Hessen

Beitrag von Wanderer » Sonntag 18. November 2007, 13:00

Naja, CHAR und BYTE unterscheiden sich normal nicht. Schau dir die ASCII-Tabelle an und addiere einfach einen negativen Offset darauf (32) wenn der Wert zwischen 0x61 und 0x7a liegt.

EDIT: Brauchst du das fürs Studium/Ausbildung? Ansonsten würde ich dir empfehlen nimm 'ne Skriptsprache und mach dir das Leben leichter!
Wanderer, kommst du nach Sparta, verkündige dorten, du habest uns hier liegen gesehn, wie das Gesetz es befahl.

Benutzeravatar
BlackDevil
Null-Leiter
Beiträge: 407
Registriert: Samstag 15. Oktober 2005, 15:38
Kontaktdaten:

Beitrag von BlackDevil » Sonntag 18. November 2007, 13:11

gibts da keinen befehl? Wollte nich schon wieder ne if anweisung ^^ weil sonst kann ich auch sagen

Code: Alles auswählen

if(op==x)
op=X
if(op==t)
op=T
und so weiter

das wär totale arbeit und nich grad schöner Stil. Ein Befehl wäre mir ganz lieb das ich sowas wie uppercase verwende (das funzt nur nich ...)

Ja ich brauch das fürs Studium. Im Hobby würde ich Atmels Programmieren, da komm ich auch um C nich drum rum ^^ aber wir lernen in Sem.1 erstma C++

Benutzeravatar
BlackDevil
Null-Leiter
Beiträge: 407
Registriert: Samstag 15. Oktober 2005, 15:38
Kontaktdaten:

Beitrag von BlackDevil » Sonntag 18. November 2007, 13:35

ah ch hab ne lösung gefunden

Geht ja im späteren Verlauf um die Auswertung als Switch Case

Code: Alles auswählen

switch(op){
case 'x':
case 'X':
STATEMENT

case 'o':
case 'O':
STATEMENT
}
usw


wunderbar. Danke

Funkenschlosser
Null-Leiter
Beiträge: 360
Registriert: Samstag 24. Juni 2006, 10:02

Beitrag von Funkenschlosser » Sonntag 18. November 2007, 23:14

Schreib doch einfach:

char op;

cin >> op;

if('a' <= op && op <= 'z') // Ist es ein Kleinbuchstabe?
op -= ('a' - 'A'); // ja, dann ändern!

cout << op;

---

Warum immer so kompliziert.....;)

Funky

jf27el
Null-Leiter
Beiträge: 4312
Registriert: Donnerstag 2. August 2007, 09:10
Wohnort: BW

Beitrag von jf27el » Montag 19. November 2007, 06:08

Gibt es das bei C nicht einfach den 2hoch7 Bit zu setzen?

Oder bin ich auf der komplett falschen Baustelle?

Gruß
jf27el

Timo-23
Null-Leiter
Beiträge: 83
Registriert: Freitag 11. November 2005, 09:07
Kontaktdaten:

ctype

Beitrag von Timo-23 » Montag 19. November 2007, 09:15

Hallo,
in der "ctype" Bibliothek gibt es die Funktionen tolower() und toupper()
sie wandeln einen String in Klein- bzw. Großbuchstaben um.

Weitere Informationen findest du im OpenBook vom Galileo Verlag:
http://www.galileo-press.de/openbook/c_ ... 731F03618C

Gruß Timo

Benutzeravatar
BlackDevil
Null-Leiter
Beiträge: 407
Registriert: Samstag 15. Oktober 2005, 15:38
Kontaktdaten:

Beitrag von BlackDevil » Dienstag 20. November 2007, 20:09

Wenn ich ne riesiege if schleife und nen switch case kram mach ... das is käse mach ich glei switch case
weniger fehler anfällig weil keine Logik

mit toupper hab ich probiert das löft nich

aber hab ja ne lösung ;)

Antworten