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

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

Войти
Регистрация
Восстановить пароль
 
Даша_93
3 / 3 / 0
Регистрация: 10.06.2012
Сообщений: 31
#1

Файловые потоки данных - C++

10.01.2013, 21:15. Просмотров 351. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста!
Надо написать программу, которая считывает из файла строки и сохраняет их в другой файл в обратном порядке.
Я конечно начала,но думаю уже ошибки да есть(
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
#include "stdafx.h"
#include <stdio.h>
#include <fstream>
#include <conio.h>
#include <string.h>
#include <cstdio>
#include "cstdlib"
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
setlocale(LC_ALL,"Russian");
ifstream input("input.txt"); 
ofstream output("output.txt"); 
output << input.rdbuf(); 
fstream fs("input.txt",ios::binary|ios::in|ios::out|ios::trunc);
if(!fs)
{
cerr<<"Ошибка открытия файла."<<endl;
}
else
{
 
}
return 0; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 21:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Файловые потоки данных (C++):

Файловые потоки - C++
1 задача) Дан текстовый файл. Напечатать все строки, в которых имеется хотя бы один пробел. 2 задача) Дан файл f, элементами которого...

Файловые потоки - C++
Для каждого автобуса автопарка укажите его номер, маршрут, фамилию и инициалы шофера, время в пути. Предусмотреть поиск по фамилии шофера.

Файловые потоки - C++
Компилятор ругается при создании экземпляра класса ofstream. Среда разработки - Visual C++ 2008. Выдает error C2079: 'fileout' uses...

Файловые потоки - C++
Структура enum status {Boss=1, Manager}; struct Worker { string Name; int Year; ...

Файловые потоки в Си и С++ - C++
Вот код. Нужно использовать чтение из файла и запись в файл, такое же как и в языке СИ (без использования библиотек которых нет в СИ). Я...

файловые потоки - C++
Помогите найти ошибку! Программа из книги Дейтелов!Не понимаю что я пропустил .. ------ Построение начато: проект: potok,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gray_fox
What a waste!
1507 / 1210 / 68
Регистрация: 21.04.2012
Сообщений: 2,545
Завершенные тесты: 3
10.01.2013, 22:16 #2
Можно так:
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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cstdlib>
 
 
int main() {
   std::ifstream ifs("input.txt");
   std::ofstream ofs("output.txt");
   
   if (!ifs) {
      std::cerr << "Can't open input.txt for reading" << std::endl;
      return EXIT_FAILURE;
   }
   if (!ofs) {
      std::cerr << "Can't open output.txt for writing" << std::endl;
      return EXIT_FAILURE;
   }
   
   std::vector<std::string> buffer;
   for (std::string line; std::getline(ifs, line); ) {
      buffer.push_back(line);
   }
   while (!buffer.empty()) {
      ofs << buffer.back() << std::endl;
      buffer.pop_back();
   }
}
cadet
115 / 76 / 6
Регистрация: 10.01.2010
Сообщений: 275
10.01.2013, 22:17 #3
Учебник Богатырева. возможно поможет)

7.33. Напишите программу, печатающую строки файла в обратном порядке. Не считывать
файл целиком в память! Следует использовать метод "обратного чтения" либо метод
"быстрого доступа" к строкам файла, описанный в главе "Работа с файлами".


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
44
45
46
47
48
49
/* Инвертирование порядка строк в файле.
     * Используется та идея, что файл-результат имеет тот же
     * размер, что и исходный
     */
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <stdio.h>
 
    #define BUFS 4096       /* максимальная длина строки */
 
    void main(int argc, char **argv )
    {
            FILE *fp;
            struct stat st;
            long len;
            char buffer[ BUFS+1 ];
            FILE *fpnew;      /* инверсный файл */
            int lgt;
 
            if( argc != 2 ){
                    printf("Error: must be filename\n");
                    exit(1);
            }
            if( (fp= fopen( argv[1], "r" )) == NULL ){
                    printf( "Can not open %s\n", argv[1] );
                    exit(2);
            }
            stat( argv[1], &st );   /* fstat(fileno(fp), &st); */
            len = st.st_size;       /* длина файла в байтах */
 
            if( (fpnew = fopen( "inv.out", "w" ))== NULL ){
                    printf("Can not create file\n");
                    exit(3);
            }
 
            while( fgets( buffer, sizeof buffer, fp ) != NULL ){
                    lgt = strlen( buffer );
                    fseek(fpnew, len - lgt , 0);
                    /* Помните, что смещение у lseek и fseek -
                     * это число типа long, а не int.
                     * Поэтому лучше всегда писать
                     *      lseek(fd, (long) off, whence);
                     */
                    len -= lgt;
                    fprintf( fpnew, "%s", buffer );
                    /* или лучше  fputs(buffer, fpnew); */
            }
            fclose( fp ); fclose( fpnew );
    }
Даша_93
3 / 3 / 0
Регистрация: 10.06.2012
Сообщений: 31
12.01.2013, 06:03  [ТС] #4
gray_fox, а можете вот эту часть закомментить,пожалуйста?
C++
1
2
3
4
5
6
7
8
std::vector<std::string> buffer;
   for (std::string line; std::getline(ifs, line); ) {
      buffer.push_back(line);
   }
   while (!buffer.empty()) {
      ofs << buffer.back() << std::endl;
      buffer.pop_back();
   }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 06:03
Привет! Вот еще темы с ответами:

Файловые потоки и функции - C++
Скажите пожалуйста, как передать файловый поток в функцию?

Бинарные файловые потоки - C++
Нужно написать две функции, одна из них сохраняет перечень в бинарный файл, другая считает данные из этого же бинарного файла. Читал про...

Бинарные файловые потоки - C++
Существует ли стандартный вариант? Как обозван тип такого потока для записи? Для чтения? Чтоб бинарники писать операторами типа so&lt;&lt;d; (so...

Файловые указатели. Потоки - C++
Вот какой вопрос у меня появился. Пусть есть 2 указателя, связанных с одним и тем же файлом открытым в режиме read. Если я считываю...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.01.2013, 06:03
Ответ Создать тему
Опции темы

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