Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

открыть N штук файлов - C++

24.11.2009, 00:24. Просмотров 565. Ответов 7
Метки нет (Все метки)

не могу разобраться как можно открыть для записи (создать) N штук файлов за один цикл. N задается пользователем.
имена файлов должны задаваться так же пользователем и в цикле,но с этим проблем нет. проблема в том,как составить алгоритм который бы менял переменные f1,f2,f3 и т.д ..так,чтобы за первый проход открывался файл f1, затем f2 ,и в конце fN.подскажите как это сделать
заранее спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2009, 00:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос открыть N штук файлов (C++):

Открыть k файлов подряд - C++
Рядом с .exe лежит папка test, а в папке той файлы вида i.in, где i - это число. Вот нужно отрыть эти файлы и считать из них инфу, как...

Открыть несколько разных файлов - C++
Добрый вечер. Не могу разобраться с проблемой. Нужно открыть несколько файлов text, где i цифра от 1 до n (text1, text2, text3 и т.д.)....

Лабораторные по с++. 7 штук - C++
Всем привет. Кто может помочь с лабами по с++, ответьте в этой теме свои контакты. Вам несложно помочь, а мне приятно. Могу предоставить в...

ВЫвести числа от 1 до n по 8 штук в строке - C++
Спросить у пользователя число n. Напечатать числа от 1 до n, по 8 в одной строке. Не пойму как вывести числа по 8 в каждой строке,...

переписать на С++ задачи на паскале (12 штук) - C++
Помогите перенетси в С++ Несколько задач.. 12 штук.. Они не сложные написанны на паскале.. Буду очень благодарен.. Все лежит в архвие..

Как разбить программу на отдельные модули в количестве 3 штук? - C++
#include <iostream> using namespace std; int main() { int n; int i = 0; int s = 0; int z; cout << "Entered number...

7
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
24.11.2009, 00:30 #2
C++
1
2
3
4
5
6
7
8
std::vector<FILE*> files;
 
for (size_t i<0; i<N; i++)
{
   std::string s;
   std::cin >> s;
   files.push_back(fopen(s.c_str(), "r"));
}
0
nickson91
0 / 0 / 0
Регистрация: 24.11.2009
Сообщений: 15
24.11.2009, 00:40  [ТС] #3
большое спасибо! только нужен код на чистом Си. и, если не сложно, поясните что это за структура
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
24.11.2009, 00:43 #4
на чистом Си это работать не будет.
расписывать лень, но нужно ввести N, а потом выделить память (realloc) для хранения N указателей FILE*.
в конце работы всё почистить (free) за собой
0
nickson91
0 / 0 / 0
Регистрация: 24.11.2009
Сообщений: 15
24.11.2009, 09:56  [ТС] #5
я правильно понял что нужно создать динамический массив указателей?
и можно ли будет потом со всеми этими файлами работать?
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
24.11.2009, 10:05 #6
Правильно. Можно.
1
nickson91
0 / 0 / 0
Регистрация: 24.11.2009
Сообщений: 15
24.11.2009, 23:13  [ТС] #7
спасибо большое)
еще два вопроса..
задача,если упрощенно, записать в новый двоичный файл данные исходного файла в блоках по ,допустим, 20 байт.

брал целочисленный массив А[20/sizeof(int)], тогда
fread ((void*)A, sizeof(int), 20/(sizeof(int)), f1); --считывает из исходного файла данные и записывает их в массив А.

а тогда верно ли, что
fwrite ((void*)А,sizeof(int),20/(sizeof(int)),f2) записывает данные в таком же виде,как они были в исходном,или же данные записываются в новом целочисленном формате?

второй вопрос,к этой же задаче.. при таком неявном преобразовании в тип int, у нас могут получаться абсолютно любые числа как элементы массива А,включая и 0,и -1 ? это важно ,поскольку ,когда в исходном файле останется несчитанными например 8 байт (меньше 20) , то в новый файл надо будет записать не все элементы массива а только несколько первых. для этого я хочу обнулять массив каждый раз перед чтением из исходного ,а затем записывать его элементы в новый файл,пока не встретится элемент =0. правильно ли это? ибо если какието данные исходного файла могут кодироваться нулями надо этот способ не подойдет
заранее спасибо)
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
25.11.2009, 18:37 #8
записывает данные в таком же виде,как они были в исходном,или же данные записываются в новом целочисленном формате?
Если оба файла открыты в бинарном формате и нет ошибок чтения/записи, тогда верно - будет записано тоже самое.

Добавлено через 13 минут
при таком неявном преобразовании в тип int, у нас могут получаться абсолютно любые числа как элементы массива А,включая и 0,и -1 ?
Да - любые.
это важно ,поскольку ,когда в исходном файле останется несчитанными например 8 байт (меньше 20) , то в новый файл надо будет записать не все элементы массива а только несколько первых. для этого я хочу обнулять массив каждый раз перед чтением из исходного ,а затем записывать его элементы в новый файл,пока не встретится элемент =0. правильно ли это?
Нет - неправильно.

Что именно ты хочешь сделать ?
Скопировать один файл в другой ?

Все делается так.
Заводишь некий буфер, например
char buf[1024];
Далее с помощью fread() читаешь 1024 байта, при этом проверяешь сколько реально байт было считано.
Если было считано 1024 байта, то и записываешь 1024 байта.
Если было считано 13 байт, то и записываешь 13 байт.
Если при чтении встретился конец файла, тогда ничего не пишешь - а просто закрываешь выходной файл ( и входной тоже ).
1
25.11.2009, 18:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2009, 18:37
Привет! Вот еще темы с ответами:

Записать в файл txt числа с последовательным увеличением на 1...100 штук - C++
записать в файл txt числа с последовательным увеличением на 1...100 штук

Вывести в столбик слова, в которых заданная буква имеется в количестве двух штук - C++
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;iostream&quot; #include &lt;Windows.h&gt; using namespace std; int main() { ...

Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов... - C++
Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже сдавать.Очень рассчитываю на любую вашу помощь. Вот задача. ...

Раздельная компиляция (нюансы использования заголовочных файлов и файлов реализации) - C++
Почему во многих учебниках функции-члены класса внутри класса только объявляют, но определяют вне самого класса (не, ну как бы в классе, но...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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