Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Loks
0 / 0 / 0
Регистрация: 06.07.2014
Сообщений: 14
#1

Непонятные элементы в выводе списка файлов директории - C++

11.07.2014, 12:29. Просмотров 379. Ответов 8
Метки нет (Все метки)

Всем привет, понадобилось заиметь список файлов в директории, нашел на этом форуме программу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <dirent.h>
#include <string.h>
 
//~ #define NAME_MAX 256
 
int main(int argc, char **argv)
{
    DIR *dfd;
    struct dirent *dp;
    char filename[NAME_MAX];
 
    if ( argc < 2 )
        strcpy(filename, ".");
    else
        strcpy(filename, argv[1]);
 
    printf("%s\n\n", filename);
    dfd=opendir(filename);
 
    while( (dp=readdir(dfd)) != NULL )
            printf("%s\n", dp->d_name);
 
    closedir(dfd);
    return 0;
}
Все работает, только вывод получается как в аттаче.
Объясните, откуда берутся эти точки? Я убрал их добавлением условия проверки на количество символов, но может можно это исправить без добавления такого условия?
Миниатюры
Непонятные элементы в выводе списка файлов директории  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2014, 12:29     Непонятные элементы в выводе списка файлов директории
Посмотрите здесь:

Вывод списка файлов из директории - C++
Доброе время суток. Возникла проблема, мне необходимо осуществить вывод списка файлов из определенной директории(задается пользователем),...

Вывод списка файлов и папок директории - C++
Доброго времени суток! Помогите пожалуйста написать функцию, описанную ниже. Функция: Вход: строка(адрес) E:\Games\Distributives\ ...

Вывод списка файлов из выбранной директории - C++
Необходимо вывести на экран список файлов из директории, заданной пользователем. // ConsoleApplication3.cpp: определяет точку входа...

Чтение списка файлов из директории, их открытие и обработка - C++
Доброго времени суток! Написал программу, которая будет открывать нужную папку, считывать все файлы из нее (все имеют формат .txt и потом...

Аналог ls (вывод списка папок и файлов в заданной директории) - C++
как сделать, чтобы программа выводила список папок и файлов в заданной директории?

Как убрать лишние символы при выводе в консоль списка файлов? - C++
Поясните, пожалуйста. Собираю кроссплатформенные методы, для работы с файлами. Взял для разбора такой метод. Всё работает, только вот...

Непонятные символы при выводе - C++
Я уже такую фигню много раз наблюдал типа если не поставить '\0' или убрать при выводе какие то непонятные символы идут от пример. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 1
11.07.2014, 13:26     Непонятные элементы в выводе списка файлов директории #2
Точка - это текущая директория
Две точки - родительская директория
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
11.07.2014, 13:29     Непонятные элементы в выводе списка файлов директории #3
Цитата Сообщение от Loks Посмотреть сообщение
Я убрал их добавлением условия проверки на количество символов, но может можно это исправить без добавления такого условия?
Фильтруйте конкретно директории . и ..
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 1
11.07.2014, 13:31     Непонятные элементы в выводе списка файлов директории #4
Цитата Сообщение от John Prick Посмотреть сообщение
Удаляйте конкретно директории . и ...
Тогда удалится и содержимое соответствующих директорий (текущей или родительской)!
Не думаю, что ТС будет этому рад.
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
11.07.2014, 13:33     Непонятные элементы в выводе списка файлов директории #5
zss, я не правильно выразился. Исправил
Loks
0 / 0 / 0
Регистрация: 06.07.2014
Сообщений: 14
11.07.2014, 14:22  [ТС]     Непонятные элементы в выводе списка файлов директории #6
John Prick,
Фильтруйте конкретно директории . и ..
Подскажите, как можно это сделать? Если честно, я не очень понимаю алгоритм работы этого кода.
Только до того момента, когда в переменную filename записывается либо точка, либо аргумент из командно строки.
John Prick
774 / 707 / 129
Регистрация: 27.07.2012
Сообщений: 2,026
Завершенные тесты: 3
11.07.2014, 14:30     Непонятные элементы в выводе списка файлов директории #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
while( (dp=readdir(dfd)) != NULL )
{
    if ((dp->d_name[0] == '.') &&
            ((dp->d_name[1] == '\0') ||
                 ((dp->d_name[1] == '.') && (dp->d_name[2] == '\0'))))
        continue;
    printf("%s\n", dp->d_name);
}
Добавлено через 2 минуты
Цитата Сообщение от Loks Посмотреть сообщение
Если честно, я не очень понимаю алгоритм работы этого кода.
readdir при каждом обращении возвращает указатель на структуру, которая содержит поле d_name, где хранится имя очередного файла или подкаталога в текущей директории. Либо возвращает NULL, когда обход каталога завершён.
Loks
0 / 0 / 0
Регистрация: 06.07.2014
Сообщений: 14
11.07.2014, 16:12  [ТС]     Непонятные элементы в выводе списка файлов директории #8
John Prick, спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2014, 16:15     Непонятные элементы в выводе списка файлов директории
Еще ссылки по теме:

Непонятные цифры при выводе - C++
Делаю задачу по структурам. В условии задачи есть пункт, где нужно реализовать вывод данных. То есть, я записал через структуру, например,...

Непонятные символы при выводе русских символов в консоли - C++
Доброго времени суток, у меня возникла проблема. Когда я ввожу текст с клавиатуры, при выводе его на экран выводит непонятные символы....

При выводе массива выводятся лишние непонятные символы - C++
Имеется массив vord из 10 символов. Ввожу несколько символов(например 4 символа) в этот массив. Определяю их количество - count. Создаю...

При выводе динамической матрицы выводятся непонятные цифры - C++
данная программа считает суммы строк двумерного массива. но при выводе массива, который хранит их выводятся непонятные цифры( как я...

Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2 - C++
Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2. Список L отсортировать в порядке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.07.2014, 16:15     Непонятные элементы в выводе списка файлов директории #9
Loks, . и .. всегда вначале, поэто при вызове readdir делайте 2 холостых вызова(не читайте значения), а следующие вызовы уже дадут содержимое
Yandex
Объявления
11.07.2014, 16:15     Непонятные элементы в выводе списка файлов директории
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru