blubb
#1
Post
by blubb » 13. Jan 2005 11:49
hi,
folgendes problem:
Code: Select all
char *browser(char *that_dir)
{
DIR *directory = opendir(that_dir);
if(!directory)
return 0;
struct dirent *entry;
int anz = 0;
char **files = NULL;
while((entry = readdir(directory)))
{
if(!strncmp(".", entry->d_name, 1))
continue;
realloc(files, sizeof(files)+1);
//realloc(files[anz], strlen(entry->d_name));
files[anz] = (char *)malloc(strlen(entry->d_name)*sizeof(char));
strcpy(files[anz], entry->d_name);
anz++;
}
ich versteh nich wieso das segfaultet :/
lg
blubb
kanonenfutter
Posts: 266 Joined: 10. Sep 2004 14:37
Contact:
#2
Post
by kanonenfutter » 13. Jan 2005 16:42
die realloc-zeile muss so aussehen:
Code: Select all
files = (char**) realloc(files, sizeof(*files) + sizeof(char*));
dann funktionierts.
Last edited by
kanonenfutter on 13. Jan 2005 21:00, edited 1 time in total.
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach
http://www.antihuth.de/
kanonenfutter
Posts: 266 Joined: 10. Sep 2004 14:37
Contact:
#3
Post
by kanonenfutter » 13. Jan 2005 16:57
hmm, es funktioniert so zwar, aber ich frage mich selber, warum eigentlich.
sizeof (*files) liefert immer nur die grösse eines einzelnen/des ersten array-elements (also 4) und nicht die tatsächliche grösse des arrays.
mal nachdenken....
"Email und Internet haben gemeinsam, dass sie beide in HTML geschrieben sind" (Peter Huth, TV-Computerexperte). Zitiert nach
http://www.antihuth.de/
P. Ointer
#4
Post
by P. Ointer » 05. Feb 2005 21:49
ein Zeiger auf einen Zeiger auf ein Zeichen -- Da kann ich beim besten Willen auch nichts von array erkennen!