Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Testen ob Variable "leer" ist...

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.01.2002
    Ort
    Meckenheim
    Beiträge
    42

    Testen ob Variable "leer" ist...

    Hallo!

    Ich habe hier eine kleines Problem..

    Ich würde gerne schauen ob einer Variable schon ein Wert zugewiesen ist!

    Die Variable ist ein string.

    Greife ich auf eine "leere" Variable zu bekomme ich natürlich einen Speicherzugriffsfehler... Wie kann ich also vorher kurz testen ob die Variable schon einen sinnigen Wert enthält?

    Beste Grüße und vielen Dank!

    Kernel-Error
    Linux, verbindet Menschen :-)

    http://www.kernel-error.de/

  2. #2
    Registrierter Benutzer
    Registriert seit
    11.01.2006
    Beiträge
    103
    keine ahnung ob das funktioniert..., in java geht es jedenfalls so:
    variable == null

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Welche Sprache?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer Avatar von Boron
    Registriert seit
    07.01.2002
    Beiträge
    827
    In C wäre das dann doch am ehesten: http://home.fhtw-berlin.de/~junghans...NS/strlen.html
    Gruß Boron (der sich oft wegen mieser Rechtschreibung anderer die Augen reiben muss)

    LINUX IS LIKE AN INDIAN TENT: NO GATES, NO WINDOWS AND AN APACHE INSIDE!
    Hardware Monitoring unter Linux -> http://santafu.sourceforge.net (Temperaturen, Lüfterdrehzahlen und Spannungen)

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    strlen kann auf manchen Plattformen bei einem Nullpointer crashen (zB Solaris)

    In so einem Fall muß man vorher den char Pointer auf ungleich 0 überprüfen (unter der Annahme, daß die Variable sauber initialisiert wurde)

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer
    Registriert seit
    06.12.2005
    Ort
    CH - Zug
    Beiträge
    88
    Zitat Zitat von anda_skoa Beitrag anzeigen
    strlen kann auf manchen Plattformen bei einem Nullpointer crashen (zB Solaris)

    In so einem Fall muß man vorher den char Pointer auf ungleich 0 überprüfen (unter der Annahme, daß die Variable sauber initialisiert wurde)

    Ciao,
    _
    hmm:

    ************************************
    char *testchar;

    testchar = NULL;

    /* Hier wird in die Var geschrieben */
    assert(NULL!=testchar)
    /* Hier wird aus der var gelesen */
    ************************************

    Solange ich die var nicht verwende bleibt sie NULL. Mit assert(testchar!=NULL) wunderbar abzufangen. Natürlich nur wenn man sicher ist, dass etwas drin sein sollte.

    Warum ich das schreibe: du hast geschrieben auf ungleich 0 überprüfen. Meintest du nicht NULL? Ist klarer und gibt schöne Segfaults
    Geändert von gorba (11-04-2007 um 15:49 Uhr)
    /* -->
    RTFM
    <-- */

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    NULL ist im Normalfall eh rgendwo als 0 definiert. Ich bevorzuge ja 0, klarer ist in dem Fall Geschmackssache

    Ich glaube mich daran zu erinnern mal von Stroustroup gelesen zu haben man solle das NULL zumindest in C++ besser sein lassen, erinnere mich aber nicht mehr genau wieso. Ist auch egal.

    MfG Peschmä, stark an der Schönheit von Segfaults zweifelnd
    Geändert von peschmae (11-04-2007 um 17:49 Uhr)
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von peschmae Beitrag anzeigen
    Ich glaube mich daran zu erinnern mal von Stroustroup gelesen zu haben man solle das NULL zumindest in C++ besser sein lassen, erinnere mich aber nicht mehr genau wieso.
    Weil NULL manchmal irrtümlich durch einen HEADER so definiert wird
    Code:
    #define NULL (void*)0
    und dann sowas nicht mehr geht
    Code:
    int* i = NULL; // kein impliziter Cast von void* auf int*
    In C Code wird aber oft NULL benutzt, da scheint das schon fast zum Codingstandard der meisten Programmierer zu gehören

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •