我正在使用 dirent 从特定文件夹中读取文件名,并且我想将名称保存在 char* 向量中。它似乎是在复制一些奇怪的符号而不是复制文件名。这是我到目前为止所尝试的:
std::vector<char*> filenames;
int filenamesAndNumberOfFiles(char *dir)
{
struct dirent *dp;
DIR *fd;
int count = 0;
if ((fd = opendir(dir)) == NULL)
{
fprintf(stderr, "listdir: can't open %s\n", dir);
return 0;
}
while ((dp = readdir(fd)) != NULL)
{
if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, ".."))
continue; /* skip self and parent */
printf("Filename: %s\n", dp->d_name);
filenames.push_back(dp->d_name);
count++;
}
closedir(fd);
return count;
}
谁能告诉我为什么它不复制文件名,我该怎么做才能复制它们?
编辑: d_name 是一个 char 变量,声明为:
char d_name[PATH_MAX];
似乎在我的程序中 PATH_MAX 等于 260。
PS:我是第一次使用dirent,所以不是很熟悉。