PDA

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

inge
03-04-2007, 11:48
keine ahnung ob das funktioniert..., in java geht es jedenfalls so:
variable == null

anda_skoa
03-04-2007, 16:13
Welche Sprache?

Ciao,
_

Boron
03-04-2007, 17:08
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,
_

gorba
11-04-2007, 15:46
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,
_