LINUX.ORG.RU

История изменений

Исправление ecko, (текущая версия) :

Ну, вот, например, вариант простого использования vector.

#include <dirent.h>
#include <stdio.h>

#include <string>
#include <vector>


int main(int argc, char *argv[])
{
    if (argc != 2) {
        fprintf(stderr, "Usage: %s DIR\n", argv[0]);
        return 1;
    }

    DIR *dir = opendir(argv[1]);
    if (dir == nullptr) {
        perror("opendir");
        return 1;
    }

    std::vector<std::string> entries;
    for (dirent *ent = readdir(dir); ent != nullptr; ent = readdir(dir))
        entries.push_back(ent->d_name);
    closedir(dir);

    for (const auto& e : entries)
        printf("%s\n", e.c_str());
    return 0;
}

Напиши мне не такой жирный вариант такой программы на Си. Обязательно с хранением. Вывод на экран — просто частный случай.

Учитывай, что ты не знаешь, сколько у тебя entries в директории.

Исходная версия Deleted, :

Ну, вот, например, вариант простого использования vector.

#include <dirent.h>
#include <stdio.h>

#include <string>
#include <vector>


int main(int argc, char *argv[])
{
    if (argc != 2) {
        fprintf(stderr, "Usage: %s DIR\n", argv[0]);
        return 1;
    }

    DIR *dir = opendir(argv[1]);
    if (dir == nullptr) {
        perror("opendir");
        return 1;
    }

    std::vector<std::string> entries;
    for (dirent *ent = readdir(dir); ent != nullptr; ent = readdir(dir))
        entries.push_back(ent->d_name);
    closedir(dir);

    for (const auto& e : entries)
        printf("%s\n", e.c_str());
    return 0;
}

Напиши мне не такой жирный вариант такой программы на Си. Учитывай, что ты не знаешь, сколько у тебя entries в директории.