Vergleich: char-Feld[i] ASCII Wert



  • Moin!

    Ich versuche festzustellen ob es sich bei einer vorliegenden Zeichenkette in einem char Array um Groß- oder Kleinbuchstaben handelt.

    Dazu habe ich:
    NamensArray - in dem der Name liegt

    if (NamensArray[i]>\097){
       // Operationen
    }
    

    Ab 97 sind alle Buchstaben (um die geht es mir), groß. Kann ich einen Vergleich so anstellen? Ein aus der Menge {97..122}, also {A..Z} soll wenn er gefunden wird im Endeffekt zu einem Kleinbuchstaben konvertiert werden. Ich möchte 32 (also die Differenz im ASCII Zeichensatz zwischen groß- und klein) abziehen.

    NamensArray[i]=NamensArray[i]-\032
    

    Scheint da nicht das Gelbe vom Ei zu sein.

    Hat wer eine Idee für mich? Muss das evtl. zwangsläufig ein unsigned char Array sein? Denn damit kann ich für das spezifische Problem im Gesamtzusammengang nicht arbyten. Evtl. kann man das konvertieren... hmm

    Danke im Voraus,
    dingens



  • Einfach in einer Schleife über den String mit man: tolower drübergehen sollte reichen.



  • gerne meidet man die zahlen.

    if(NamensArray[i]>='A')
      NamensArray[i]=NamensArray[i]-('a'-'A');
    

    es gibt noch bösere tricks, als nur 32 abzuziehen. NamensArray[i]&=~32 sieht lecker aus. aber die würde ich ungern selber machen und den compilerbauern überlassen. also lieber tolower nehmen.



  • Hi!

    Naja... hast Du zufaellig noch ne Idee was bei mir da oben wirklich falsch ist? Ne neue Schublade aufmachen geht immer... da hab ich schon mal ne Notlösung.
    Eigentlich war mein Ziel es direkt über die ASCII Werte zu machen...

    Gruß,
    dingens



  • bei dir war alle ok, außer daß statt \032 einfach 32 reicht. gleiches bei \97.



  • Alles klar, danke 😉


Anmelden zum Antworten