我想要一個返回給定目錄的內容的函數。爲此,我從dirent.h
使用scandir
。下面的代碼成功編譯(gcc -Wall test.c),但最後一個printf導致分段錯誤。這意味着在函數後面的「eps」結構(指向指向結構的指針數組的指針)仍然是空的:我該如何解決這個問題?在C中,當作爲參數傳遞給函數時,修改指向指向數組的指針的目標
#include <stdlib.h>
#include <stdio.h>
#include <dirent.h>
#include <string.h>
static int myselector(const struct dirent * dir_entry)
{
char * pch = strstr(dir_entry->d_name, ".");
return pch == NULL ? 1 : 0;
}
int list_dir(char * dirname, struct dirent ** eps)
{
int nbfiles = scandir(dirname, &eps, myselector, alphasort);
if(nbfiles > 0)
{
printf("inside function: %s\n", eps[0]->d_name);
return 1;
}
else
return 0;
}
int main(int argc, char *argv[])
{
int status = 0;
struct dirent ** eps = NULL;
status = list_dir("/home", eps);
if (status)
{
puts("ok");
printf("outside function: %s\n", eps[0]->d_name);
}
return EXIT_SUCCESS;
}
謝謝,在典型的「指向指針...」的例子中有明確的答案......我需要將它刻在我的頭上! – tflutre