Witam.
Natrafiłem dziś na dość irytujący błąd. Mam rekurencyjną funkcję, która zwraca char*. Póki wywoła się raz - jest okej, zwraca tekst. Gdy wywoła sama siebie zwraca "krzaczki". Wygląda ona mniej więcej tak:
char* max_size(char *path, int *max)
{
char filename[255] = "";
char *max_name;
max_name = (char *) malloc (255 * sizeof(char));
//...
while ((dit = readdir(dip)) != NULL)
{
// Omijamy . i ..
if (strcmp(dit->d_name, ".") != 0
&& strcmp(dit->d_name, "..") != 0)
{
strcpy(filename, path);
strcat(filename, dit->d_name);
if (is_dir(filename))
{
strcat(filename, "/");
max_name = max_size(filename, max);
}
else
{
stat(filename, &st);
if (st.st_size > *max)
{
strcpy(max_name, filename);
*max = st.st_size;
}
}
}
}
return max_name;
}
Wywołanie:
int max = 0;
char* name;
name = max_size(path, &max);
Głupieję w obliczu wskaźników i referencji, więc prosiłbym o jakąś wskazówkę co z tym fantem zrobić. Z góry dziękuję :)