String in Großbuchstaben konvertieren in C?

2 Antworten

  1. mit isupper() kannst du rausfinden, ob es sich um einen Großbuchstaben handelt...
  2. mit islower() kannst du rausfinden, ob du ein Zeichen in einen Großbuchstaben umwandeln musst...

wenn es nur um [a-z] geht (also nich um Umlaute [äöü]), dann geht es recht einfach:

void gross(char * buf) {
  for (; *buf; buf++)
    if (islower(*buf))
      (*buf) += 'A' - 'a';
}
Woher ich das weiß:Studium / Ausbildung

KarlRanseierIII  02.09.2019, 20:47

Mmmmh, richtig schön dreckig....

0
RIDDICC  02.09.2019, 21:08
@KarlRanseierIII
  1. wieso? der String muss eben NUL-terminiert sein... ist doch normal... oda?
  2. hab mir grad das Gesicht mit Katzenstreu respektive Zeolith eingerieben... und würde jetzt lieber „buf[0]+= 'A' - 'a';“ schreiben... LOL
0
KarlRanseierIII  02.09.2019, 21:56
@RIDDICC

Nain nein, funktionieren tut das soweit ... es ist eben nur so richtig 'dreckig', also unästhetisch. Stört mich persönlich natürlich nicht, bin ja auch nicht besser :-D.

1

Nein, es funktioniert eher mit toupper unter Zuhilfenahme von isupper.

Du iterierst über den String und schaust eben bei jedem Zeichen ob es geändert werden muß und änderst es dann.


RIDDICC  02.09.2019, 20:45

ja, toupper() klappt dann auch mit [äöü], wenn LOCALE richtig ge-conf-t ist...

1