Ошибка листинга директории с помощью scandir из dirent.h

Рейтинг: 0Ответов: 1Опубликовано: 21.03.2011

Есть код:

#include <iostream>
#include <dirent.h>

using namespace std;

int sel(const struct dirent *d)
{
    return 1;
}

int main(int argc, char *argv[])
{
    int i, n;
    struct dirent **entry;
    if (argc != 2)
    {
        cout << "Using: %s <directory>\n" << argv[0];
        return 0;
    }
    n = scandir(argv[1], &entry, sel, alphasort);
    if (n < 0)
    {
        cout << "Erorr reading directory\n";
        return 1;
    }
    for (i = 0; i < n; i++)
    {
        cout << entry[i]->d_name << entry[i]->d_ino << "\n";
        return 0;
    }
}

Пишу "./DIRscan /home". Выводит число .9863181. Что не так?

Ответы

▲ 2

А что не так? Всё верно выводит. Находит директорию ".". Печатает имя ".", а потом d_ino - номер ноды. Затем перевод строки. Вот и выводит ".9863181". Что написано делать, то и делает. Как и заказывали.