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

Ввод-вывод файлов - C++

Восстановить пароль Регистрация
 
mavcycyan
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 8
24.05.2013, 00:56     Ввод-вывод файлов #1
подскажите код программы, которая считывает числа из файла и выводит эти же числа в другой файл в обратном порядке
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2013, 00:56     Ввод-вывод файлов
Посмотрите здесь:

Форматный ввод/вывод с использованием текстовых файлов. C++
C++ Ввод /вывод на С++
Ввод вывод C++
C++ ВВОД-ВЫВОД!!!!
Ввод/вывод двоичных файлов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
24.05.2013, 01:52     Ввод-вывод файлов #2
Если запись фиксированного размера, достаточно читать файл с конца. В противном случае, придется организовать промежуточное хранение либо в массиве, либо в файле.
mavcycyan
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 8
24.05.2013, 17:18  [ТС]     Ввод-вывод файлов #3
я создал файл ("1.txt"), в него в столбик ввел числа.
как считать эти числа из файла, я понял, но в новый файл эти числа не выводит (
хотелось бы узнать ,что нужно исправить в этом коде, чтобы выполнялся вывод чисел в новый файл

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    ifstream fin;
    fin.open ("1.txt");
    string s;
    while (getline (fin, s))
        cout << s << '\n';
 
    ofstream fout ("txt.txt");
    fout << s ;
 
    fin.close();
    fout.close();
    getch();
    return 0;
   }
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
24.05.2013, 18:14     Ввод-вывод файлов #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main(int argc,char** argv)
{              
   ifstream    In;
   ofstream    Out;
 
   In.open("1.txt");
   Out.open("txt.txt");
 
   char  pszStr[MAX_PATH + 1];
 
   while (In.getline(pszStr,MAX_PATH))
   {
      Out << pszStr << '\n';
   }
 
   In.close();
   Out.close();
 
   getch();
 
   return 0;
}
P.S.

Если собираетесь читать файл с конца, то потоковый ввод вам не подойдет.
mavcycyan
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 8
24.05.2013, 20:59  [ТС]     Ввод-вывод файлов #5
спасибо, код работает)
а что нужно для того, чтобы считать файл с конца? (числа записать в новом файле в обратном порядке)
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
24.05.2013, 21:45     Ввод-вывод файлов #6
Если записей немного (все могут быть размещены в памяти), то можно просто использовать (динамический) массив. На первом шаге считывать все из файла в массив, на втором - записывать из массива в файл. Если записей много (в памяти не помещаются), то ставим указатель в файле на последнюю запись, считываем, записываем как первую.
Передвигаем указатель на предпоследнюю, считываем, записываем как вторую. И т.д. Если все записи одного фиксированного размера, это так же просто, как с массивом. Если нет - необходимо знать (или вычислять) положение и размер для каждой записи.
mavcycyan
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 8
24.05.2013, 23:20  [ТС]     Ввод-вывод файлов #7
спасибо за советы, буду пробовать =)
mavcycyan
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 8
26.05.2013, 13:13  [ТС]     Ввод-вывод файлов #8
попробовал воспользоваться функцией swap для разворота массива...
программа компилируется, но в новый файл ничего не выводит (

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <fstream.h>
#include <cstring.h>
#include <algorithm>
 
 
int main()
{
 
 
   ifstream    fin;
   ofstream    fout;
 
   fin.open("1.txt");
   fout.open("txt.txt");
 
    cout << "Writing to the file 'txt.txt'... " ;
 
   char  s[80];
 
   while (fin.getline(s,80)) 
 
 
        for (int i  = 0; i < 80 / 2; i++)
         std::swap(s[i], s[80 - i - 1]);
 
 
for (int i  = 0; i < 80; i++)
   {
      fout << s << '\n';
   }
 
   fin.close();
   fout.close();
 
    cout << "Press any button" ;
 
   getch();
 
   return 0;
}
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
26.05.2013, 13:55     Ввод-вывод файлов #9
Зачем еще какие-то функции? Просто считывайте массив в обратном порядке.
mavcycyan
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 8
26.05.2013, 14:13  [ТС]     Ввод-вывод файлов #10
а как это нужно сделать?
gazlan
2855 / 1803 / 271
Регистрация: 27.08.2010
Сообщений: 4,883
Записей в блоге: 1
26.05.2013, 14:47     Ввод-вывод файлов #11
Вы серьезно? Вас в детстве обратному счету не учили?

C++
1
2
3
4
for (int ii = (N - 1); ii >= 0; --ii)
{
   // do smth
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 17:12     Ввод-вывод файлов
Еще ссылки по теме:

C++ Ввод\Вывод
C++ Потоковый ввод / вывод файлов
C++ Ввод/вывод чисел из файлов

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

Или воспользуйтесь поиском по форуму:
mavcycyan
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 8
26.05.2013, 17:12  [ТС]     Ввод-вывод файлов #12
учили, но если бы я знал, как применить это в с++ ,не задавал бы столько бесполезных вопросов )
Yandex
Объявления
26.05.2013, 17:12     Ввод-вывод файлов
Ответ Создать тему
Опции темы

Текущее время: 04:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru