2015-03-28 3 views
0
studentsDir = opendir(lineValues); 
while ((entry = readdir(studentsDir)) != NULL) { 
    stat(path, &dirData); 
    if (S_ISDIR(dirData.st_mode) && (entry->d_name[0] != '.') 
      && (entry->d_name[1] != '.')) { 

Im поиск в каталоге для папок. Проблема заключается в том, что стат возвращает dirdata с пустыми значениями для большинства папокФункция stat возвращает пустую структуру

+3

Проверить возвращаемое значение stat() и, возможно, проверить errno. В противном случае, есть ли у программы разрешения на проверку файлов? – n0741337

ответ

0

нуждается код:

#include <sys/types.h> 
    #include <sys/stat.h> 
    #include <unistd.h> 

прототипом функции:

int stat(const char *path, struct stat *buf); 

так что вы также должны:

struct stat dirData; 

и переменная пути должна быть фактическим путем (может быть относительной или абсолютной e), с именем файла, в целевой файл.

Ничто в опубликованном коде указывает, что ни одно из указанных выше не было включено в код.

и 'entry' является указателем на 'struct dirent', где текущее имя файла/каталога должно быть добавлено к 'path', прежде чем stat() его использует.

Необходимо ввести элемент «entry», чтобы убедиться, что он не является NULL перед его использованием.

структура Dirent содержит d_name [256] поле, которое будет содержать имя текущего файла (или каталога) (но не весь путь) так каждый раз, когда шаги кода в (суб) каталога, (который не выдает код) , тогда путь должен иметь строку из d_name [] , присоединенную к строке пути

Смежные вопросы