Unklare for-Schleife

18/10/2010 - 14:55 von Curtis Newton | Report spam
Hallo,

ich wollte schnell mal einen ini-Parser ausprobieren. Daher gegoogelt,
http://c.snippets.org/snip_lister.php?fname=ini.c sieht ganz gut aus.
In den Source steht extremst gekürzt folgendes:

struct CfgStruct
{
char *Name;
void *DataPtr;
enum CfgTypes VarType;
};

int ReadCfg(const char *FileName, char *SectionName, struct CfgStruct *MyVars)
{
struct CfgStruct *mv;
for (mv = MyVars; mv->Name; ++mv)
{
tu_was_mit_mv_name(mv->Name);
}
}

Nach dem ersten Durchlauf der for-Schleife gibt es einen segfault.
mv zeigt ja auch nach ++mv auf irgendwas. Wie kommt denn der
Programmierer drauf, dass nach dem ++mv das auf irgendwas sinnvolles,
geschweige denn '\0' oder so steht? Verstehe ich nicht.

Ich kann doch nicht der erste sein, der drüber stolpert.

C.

Bye
 

Lesen sie die antworten

#1 Rainer Weikusat
18/10/2010 - 15:12 | Warnen spam
Curtis Newton writes:
Hallo,

ich wollte schnell mal einen ini-Parser ausprobieren. Daher gegoogelt,
http://c.snippets.org/snip_lister.php?fname=ini.c sieht ganz gut aus.
In den Source steht extremst gekürzt folgendes:

struct CfgStruct
{
char *Name;
void *DataPtr;
enum CfgTypes VarType;
};

int ReadCfg(const char *FileName, char *SectionName, struct CfgStruct *MyVars)
{
struct CfgStruct *mv;
for (mv = MyVars; mv->Name; ++mv)
{
tu_was_mit_mv_name(mv->Name);
}
}

Nach dem ersten Durchlauf der for-Schleife gibt es einen segfault.
mv zeigt ja auch nach ++mv auf irgendwas.



Es zeigt auf das naechste Element des entsprechenden Feldes (von
'struct CfgStruct'-Objekten dem oa Code entnehmen kann, soll das Ende
dieses Feldes durch eine Struktur, der 'Name'-Element ein Nullzeiger
ist, gekennzeichnet werden.

Ähnliche fragen