Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Vertauschen Groß- und Kleinbuchstaben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.05.2003, 22:09 Uhr
~JensK.
Gast


Es soll ein beliebiger String eingelesen werden und dabei sollen alle kleinen Buchstaben groß gemacht werden und umgekehrt!
Kann bisher leider nur Buchstaben große machen ODER klein. Was muß ich tun damit meine Funktion erkennt ob der Buchstabe zur Zeit klein oder groß ist und ihm dementsprechend verändert ?

So sieht die jetzige Funktion aus die nur z.B. alles groß macht:


C++:
void gross_klein(char *pointer_string) {
    int x;

    for(x=0;pointer_string[x]!='\0';x++){
        pointer_string[x]=toupper(pointer_string[x]);
    }
    
    printf("\nAusgabe: %s\n\n", pointer_string);
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.05.2003, 08:01 Uhr
virtual
Sexiest Bit alive
(Operator)


Vielleicht mit:

C++:
void swap_case(char* s)
{
    while(*s)
    {
        if (islower(*s))
        {
            *s = toupper(*s);
        }else if (isupper(*s))
        {
            *s = tolower(*s);
        }
        ++s;
    }
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.05.2003, 12:33 Uhr
~Heiko
Gast


Hi,
du kannst das auch ganz einfach machen in dem du das 32-wertige bit "umlappen" lässt.

Also einfach ein xor32 über jedes char jagen. müsste meiner Meinung nach gehen.

Gruss Heiko
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.05.2003, 12:52 Uhr
virtual
Sexiest Bit alive
(Operator)


@Heiko:
Du meinst

C++:
text[i] = text[i] ^ 0x20;


Zwei einwände:
1. Ist nicht portabel
2. Berücksichtigt keine Locales. Dh würde die Umlaute nicht berücksichtigen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.05.2003, 12:59 Uhr
Alf



Hy!

Und wie wäre es mit:

C++:
if(text[i] >= 'A' &&  text[i] <= 'Z'
|| text[i] >= 'a' &&  text[i] <= 'z')
text[ i ] = text[ i ] ^ 0x20;


--
Mfg

Andy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.05.2003, 13:20 Uhr
~0xdeadbeef
Gast


@Heiko: Dein Ansatz kriegt vor allem auch Probleme mit Sonderzeichen. Stell dir vor, in dem String ist zufällig ein Leerzeichen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: