我正在使用下面的代碼將文件名保存到數組中。我從這裏得到了代碼save file names to an array。當我運行這段代碼時,它說目錄中有5個文件(即count
是5),但是,只有3個。有人可以驗證這是否正確或我犯了一個錯誤?在c目錄中列出文件
#include <string.h>
#include <stdio.h>
#include <dirent.h>
#include <malloc.h>
size_t file_list(const char *path, char ***ls) {
size_t count = 0;
size_t length = 0;
DIR *dp = NULL;
struct dirent *ep = NULL;
dp = opendir(path);
if(NULL == dp) {
fprintf(stderr, "no such directory: '%s'", path);
return 0;
}
*ls = NULL;
ep = readdir(dp);
while(NULL != ep){
count++;
ep = readdir(dp);
}
rewinddir(dp);
*ls = calloc(count, sizeof(char *));
count = 0;
ep = readdir(dp);
while(NULL != ep){
(*ls)[count++] = strdup(ep->d_name);
ep = readdir(dp);
}
closedir(dp);
return count;
}
int main(int argc, char **argv) {
char **files;
size_t count;
int i;
count = file_list("/home/rgerganov", &files);
for (i = 0; i < count; i++) {
printf("%s\n", files[i]);
}
}
它可能正在計算'.'和'..'。 –
你有沒有試過打印你得到的文件的名字?或者更好,但嘗試在調試器中逐步執行程序? –
@EugeneSh。是的,這正是它正在做的!什麼是'.'和'..'?謝謝 –