==



  • Wie kann ich ausdrücken, dass eine char varibale leer ist? bzw ob sie leer ist.

    Meiner Meinung nach sollte das so aussehen:

    if (zeichen== " ") {statement);

    Leider meldet mir der compiler einen Fehler.

    Wie geht es richtig?

    Thx, lg



  • ' anstatt " benutzen.



  • normalen Überschriften schreiben.



  • Variablen sind aber auch nur leer, wenn man sie leer initialisiert.

    char foo = 0;
    
    if(foo == 0)  // NICHT(!): foo == ''
    { statement }
    


  • A-N-Z-I schrieb:

    Variablen sind aber auch nur leer, wenn man sie leer initialisiert.

    Autsch.



  • Leer ist meiner Meinung nach der falsche Ausdruck. Eine char Variable hat eine Länge von einem byte, und in diesem einen byte steht irgendwas drinnen, und auch wenn es nur 0er sind, leer ist der Speicherplatz nicht.

    Hast du mit leer vllt. das Leerzeichen gemeint? Das sieht so aus: zeichen=' '

    Grüße,
    Harri



  • anonymus89, das was du suchst, ist die Escapesequenz '\0' (mir ist klar, dass man den Wert auch hexadezimal oder dezimal oder oktal angeben könnte, aber da es sich wahrscheinlich um Buchstaben handelt, ist die Verwendung von '\0' anstatt 0x0 zur Initialisierung weit logischer...in meinen Augen). Dadurch wird in der Regel ein "leeres" char ausgedrückt. Natürlich kann '\0' auch eine feste Bedeutung haben, aber normalerweise wird das so gelöst:

    #include <stdio.h>
    
    int main()
    {
        /* "leeres" char anlegen */
        char myVar = '\0';
    
        /* Ueberpruefen, ob 'myVar' noch "leer" ist */
        if (myVar == '\0')
        {
            printf("message: 'myVar' ist leer!\n");
        }
        else
        {
            printf("message: 'myVar' scheint gefuellt...\n");
        }
    
        return 0;
    }
    

    Noch etwas vertiefend folgende Hinweise:
    Wenn du das char neu anlegst und es NICHT initialisiert wird, steht dort irgendein zufälliger Wert drin, gegen den man dann natürlich nicht prüfen kann -> es gibt keine Möglichkeit, die Variable auf "nicht-Initialisierung" zu prüfen. Falls du das char nicht für Binärdaten verwenden willst, bringt dir die '\0' folgende Vorteile:

    • '\0' => Binäre Null im Speicher, praktisch für Erstinitialisierung und dadurch entsprechend logisch
    • Beim Reinkopieren in ein Array und anschließender Ausgabe mit printf() beispielsweise stellt '\0' gleichzeitig auch die sog. Null-Terminierung dar, womit das Ende eines char -Strings gekennzeichnet wird
    • Im normalen ASCII-Buchstabenrange kommt '\0' nicht als druckbarer Buchstabe vor, also kann '\0' von eingegebenem Text unterschieden werden und es gibt keine Doppeldeutigkeit

    Anderst siehts bei Binärdaten aus, dort wirst du dir wohl oder übel ein Flag setzen müssen oder aber dir eine geeignete Konvention einfallen lassen...



  • Da hat aber wer zu viel Zeit. 😉



  • Nicht wirklich...aber wie soll anonymus89 sonst auch die korrekte Verwendung von '\0' verstehen?



  • anonymus89 schrieb:

    Wie kann ich ausdrücken, dass eine char varibale leer ist? bzw ob sie leer ist.

    kommt drauf an wie dein programm den zustand 'leer' definiert. ein beispiel haste ja schon hier (leer = 0). das hat natürlich zur folge, dass man einen wert als 'leer' opfern muss, denn eingentlich sind variablen nie leer...


Anmelden zum Antworten