Archiv verlassen und diese Seite im Standarddesign anzeigen : Testen ob Variable "leer" ist...
Kernel-Error
03-04-2007, 10:22
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
keine ahnung ob das funktioniert..., in java geht es jedenfalls so:
variable == null
anda_skoa
03-04-2007, 16:13
Welche Sprache?
Ciao,
_
In C wäre das dann doch am ehesten: http://home.fhtw-berlin.de/~junghans/cref/FUNCTIONS/strlen.html
anda_skoa
03-04-2007, 19:24
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,
_
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
peschmae
11-04-2007, 17:44
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
anda_skoa
12-04-2007, 14:26
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
#define NULL (void*)0
und dann sowas nicht mehr geht
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,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.