Как получить содержимое директории?


Как получить содержимое директории?

23.01.2018 01:38:36 Просмотров 27 Источник

Программа по выдаче содержимого каталога. Код компилируется, но содержимого каталога так и не выдает. В чем проблема?

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

int main(int argc, char* argv[])
{
    DIR *mydir;
    struct dirent *myfile;
    struct stat mystat;

    char buf[512];
    mydir = opendir(argv[1]);
    while((myfile = readdir(mydir)) != NULL)
    {
        sprintf(buf, "%s/%s", argv[1], myfile->d_name);
        stat(buf, &mystat);
        printf("%zu",mystat.st_size);
        printf(" %s\n", myfile->d_name);
    }
    closedir(mydir);
}
У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/774501/%d0%9a%d0%b0%d0%ba-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d1%81%d0%be%d0%b4%d0%b5%d1%80%d0%b6%d0%b8%d0%bc%d0%be%d0%b5-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b8#comment1210857_774501
Берете отладчик и смотрите где проблема. Может, opendir не сработала...
https://ru.stackoverflow.com/questions/774501/%d0%9a%d0%b0%d0%ba-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d1%81%d0%be%d0%b4%d0%b5%d1%80%d0%b6%d0%b8%d0%bc%d0%be%d0%b5-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b8#comment1210863_774501
УМВР, да и с виду всё правильно... ищи глупую ошибку: забыл пересобрать, запускаешь не то/не так или ещё что...
https://ru.stackoverflow.com/questions/774501/%d0%9a%d0%b0%d0%ba-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d1%81%d0%be%d0%b4%d0%b5%d1%80%d0%b6%d0%b8%d0%bc%d0%be%d0%b5-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b8#comment1210880_774501
Всё выводится, если правильный каталог в аргументах указать. В отладчик идите.

Ответы - Как получить содержимое директории? / Как получить содержимое директории?

Sergey

24.01.2018 05:09:18

Я бы модифицировал программу так:

mydir = opendir(argv[1]);
if (mydir == NULL) {
    printf("Невозможно открыть каталог %s\n", argv[1]);
    return -1;
}

И Вам сразу всё станет понятно. Настоятельно рекомендую в 100% случаев проверять код завершения, возвращаемый функцией. Касательно функций, возвращающих значение типа указатель это правило следует использовать в 200%... Такой стиль программирования отличает программиста, пишущего код программ, которые должны работать надёжно, а не код очередной лабы.

Помочь в развитии проекта:
Закрыть X