Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2019, 12:36   #1
Miracleone
Пользователь
 
Регистрация: 23.06.2019
Сообщений: 18
По умолчанию Вывод в порядке возрастания размеров файлов

Почему не выводит размеры файлов?
Код:
#include <algorithm>
 
#include <dirent.h>
 
#include <iostream>
 
#include <stdio.h>
 
#include <string>
 
#include <string.h>
 
#include <sys/stat.h>
 
#include <sys/types.h>
 
#include <vector>
 
bool cmp(std::pair<std::string, int> a, std::pair<std::string, int> b)
 
{
 
return a. second < b. second;
 
}
 
int main(int argc, char* argv[])
 
{
 
DIR* d = opendir(".");
 
if (d == NULL)
 
{
 
perror("Ошибка открытия текущего каталога");
 
}
 
struct dirent* de;
 
std::vector<std::pair<std::string, int>> files; // Сюда будут записаны имена и размеры файлов
 
while (de = readdir(d))
 
{
 
if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, ".."))
 
{
 
continue; // 
 
}
 
struct stat st;
 
if (stat(de->d_name, &st) == -1)
 
{
 
std::cout << "Ошибка stat(" << de->d_name << "): " << strerror(errno) << std::endl;
 
}
 
else
 
{
 
if (S_ISDIR(st. st_mode))
 
{
 
std::cout << de->d_name << std::endl;
 
}
 
else
 
{
 
files. push_back(std::pair<std::string, int>(de->d_name, st. st_size));
 
}
 
}
 
}
 
closedir(d);
 
std::sort(files. begin(), files. end(), cmp);
 
for (int i = 0; i < files. size(); i++)
 
{
 
std::cout << files[i].first << std::endl;
 
}
 
return 0;
 
}
Miracleone вне форума Ответить с цитированием
Старый 23.06.2019, 13:50   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Miracleone Посмотреть сообщение
Почему не выводит размеры файлов?
Укажите строчку, где по вашему должен выводиться размер файла.
waleri вне форума Ответить с цитированием
Старый 23.06.2019, 14:02   #3
Miracleone
Пользователь
 
Регистрация: 23.06.2019
Сообщений: 18
По умолчанию

std::cout << files[i].first << std::endl;
Miracleone вне форума Ответить с цитированием
Старый 23.06.2019, 14:02   #4
Miracleone
Пользователь
 
Регистрация: 23.06.2019
Сообщений: 18
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Укажите строчку, где по вашему должен выводиться размер файла.
std::cout << files[i].first << std::endl;
Miracleone вне форума Ответить с цитированием
Старый 23.06.2019, 15:21   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

files[i].first = std::string de->d_name = // Сюда будут записаны имена
Так повторю вопрос:

Цитата:
Сообщение от waleri Посмотреть сообщение
Укажите строчку, где по вашему должен выводиться размер файла.
p51x вне форума Ответить с цитированием
Старый 23.06.2019, 15:23   #6
Miracleone
Пользователь
 
Регистрация: 23.06.2019
Сообщений: 18
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
files[i].first = std::string de->d_name = // Сюда будут записаны имена
Так повторю вопрос:
files. push_back(std:air<std::string, int>(de->d_name, st. st_size));
Miracleone вне форума Ответить с цитированием
Старый 23.06.2019, 15:29   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

И? Вы закинули в коллекцию элемент-пару. ВЫВОД ГДЕ?
p51x вне форума Ответить с цитированием
Старый 23.06.2019, 15:37   #8
Miracleone
Пользователь
 
Регистрация: 23.06.2019
Сообщений: 18
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
И? Вы закинули в коллекцию элемент-пару. ВЫВОД ГДЕ?
Так правильно? std::cout << files[i].first<< files.size() << std::endl;
Miracleone вне форума Ответить с цитированием
Старый 23.06.2019, 15:44   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Miracleone Посмотреть сообщение
Так правильно?
А попробовать слабо?
waleri вне форума Ответить с цитированием
Старый 23.06.2019, 15:48   #10
Miracleone
Пользователь
 
Регистрация: 23.06.2019
Сообщений: 18
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А попробовать слабо?
main.cpp 2, a.out2
Miracleone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать программу, которая выводит на экран содержимое текущего каталога в порядке возрастания размеров файлов. При этом имена каталогов должны выводиться первыми Miracleone Общие вопросы C/C++ 0 23.06.2019 09:24
Расположить введенные с клавиатуры четыре целых числа в порядке возрастания и в порядке убывания tima58 Помощь студентам 7 20.03.2015 13:47
Дан массив. Вывести вначале все четные числа в порядке возрастания их индексов, затем - все нечетные в порядке убывания.( Delphi ) simonte Помощь студентам 9 07.12.2013 06:54
Записать в файле g все числа файлов c и d без повторений и в порядке возрастания imeugene Помощь студентам 0 23.05.2013 16:30
Сумма каждой строки матрицы и вывод сумм в порядке возрастания (помогите доработать) tipilat Помощь студентам 9 05.07.2009 12:46