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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2009, 21:45   #21
pavelstraut
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 91
По умолчанию

Код:
File.unsetf(ios::skipws);

	File_1<<"\nexample_23.exe\n\n";

	File.seekg(0,ios::end);
	
	long i=File.tellg();
	i-=2;
	
	for(;i>=0;i--)

	{
	   char ch;
	   File.seekg(i,ios::beg);
	   File>>ch;
	   cout<<ch;
	   File_1<<ch;
	}
вот это

Последний раз редактировалось Sazary; 24.07.2009 в 00:55.
pavelstraut вне форума Ответить с цитированием
Старый 23.07.2009, 22:01   #22
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

File - указатель на входной поток(файл)
File_1 - указатель на выходной поток
File_1<<"\nexample_23.exe\n\n"; - пишет в выходной файл строку (название exe-шника - он у меня так называется)
File.seekg(0,ios::end); - устанавливает указатель чтения входного файла в позицию 0 байт от конца файла ( ios::end )
long i=File.tellg(); - записываем это значение в i
i-=1; - отнимаем один байт, чтобы прочитать последний символ в файле

дальше в цикле читаем входной файл и пишем результат в выходной ( с выводом на экран)

File.seekg(i,ios::beg); - устанавливаем позицию чтения на i-й байт от начала файла
File>>ch; - читаем символ
File_1<<ch; - пишем результат

потом в цикле i-- для сдвига позиции чтения на один байт от конца к началу входного файла
counter вне форума Ответить с цитированием
Старый 23.07.2009, 22:10   #23
pavelstraut
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 91
По умолчанию

непонятно теперь 2 вещи
long i=File.tellg(); это что записывается в i ?номер байта?
последний символ что хранится в (-1) байте?
File.seekg(i,ios::beg); почему от начала файла а не от конца
а можно так
File.seekg(0,ios::end);
long i=File.tellg();
i-=1;
и дальше цикл
так можно?
pavelstraut вне форума Ответить с цитированием
Старый 23.07.2009, 22:24   #24
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

File.seekg(0,ios::end); - установили указатель в конец файла
long i=File.tellg(); - записывает в i номер последнего байта файла

Цитата:
File.seekg(i,ios::beg); почему от начала файла а не от конца
потому что, если вы прочитаете i-й байт от конца файла ( длина которого N байт) ,то получится что читать будете не i-й байт, а (N+i)-й байт, что будет не оченб хорошо
counter вне форума Ответить с цитированием
Старый 23.07.2009, 22:27   #25
pavelstraut
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 91
По умолчанию

спасибо
теперь все понятно кроме
почему нужно от номер байта отнять 1

и еще что такое
File.unsetf(ios::skipws);

Последний раз редактировалось Sazary; 24.07.2009 в 00:55.
pavelstraut вне форума Ответить с цитированием
Старый 23.07.2009, 22:38   #26
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
и еще что такое
File.unsetf(ios::skipws);
Когда при вводе информации в поток установлен флаг skipws, начальные
невидимые символы (пробелы, табуляции и символы новой строки) отбра-
сываются. Когда флаг skipws сброшен, невидимые символы не отбрасываются.

unsetf сбрасывает флаг skipws
Изображения
Тип файла: jpg Безымянный.jpg (7.0 Кб, 138 просмотров)
counter вне форума Ответить с цитированием
Старый 23.07.2009, 22:40   #27
pavelstraut
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 91
По умолчанию

т.е. если бы мы не сбросили флаг то не было бы пробелов табуляций и т.д?

про 1 понял
а последним символом является eof?
и его нельзя считать так как переменная будет в неопределенном состоянии

Последний раз редактировалось Sazary; 24.07.2009 в 00:55.
pavelstraut вне форума Ответить с цитированием
Старый 23.07.2009, 22:51   #28
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

по идее EOF находится за последним символом файла, т.е. возвращается когда пытаешся читать данные за пределами файла
counter вне форума Ответить с цитированием
Старый 23.07.2009, 22:53   #29
pavelstraut
Пользователь
 
Регистрация: 17.07.2009
Сообщений: 91
По умолчанию

т.е
если после последнего символа сделаю так
in>>ch;(прочитать из файла) то будет в переменной ch непонятно что
а eof когда становится равен true ?
когда прочитали после последнего символа?
pavelstraut вне форума Ответить с цитированием
Старый 23.07.2009, 22:57   #30
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

http://www.codenet.ru/progr/cpp/spru/eof.php
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
печать страниц в обратном порядке Олекса Microsoft Office Word 4 30.03.2009 09:45
как защитить исходный код donet приложение sgsolar Общие вопросы .NET 4 24.02.2009 09:52
В обратном порядке mari.ha Общие вопросы C/C++ 7 25.12.2008 21:36
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
Как посмотреть исходный код exe'ника bamer Помощь студентам 6 10.11.2008 23:42