Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Основы Visual C++
Урок 20. Работа с файлами. Разрешение проблем

Проблема первая.

Как было верно замечено одним из читателей, программа для вывода содержимого файла на экран из прошлого урока работает на вполне правильно, а именно последний символ из файла почему-то выводится на экран два раза:

Результат выполнения программы

И это несмотря на то, что содержимое нашего файла было такое:

123
 
 456

Для разрешения этой проблемы измените код следующим образом:

    ...
 
     while(!fin.eof()){
 
         fin>>ch; //Читаем символ
 
         if(!fin.eof()){
 
             cout<<ch; //и печатаем его на экране
 
         }
 
     }
 
     ...

Несмотря на всю странность кода (один-то раз мы проверили - не достигли ли мы конца файла в while) он приводит к желаемому результату.

Проблема вторая. В исходном файле пропускаются пробельные символы (в частности переход на новую строку). Для разрешения этой проблемы добавьте следующую строчку:

    ...
 
     ifstream fin("test.txt");
 
     fin.unsetf(ios::skipws); //Отменить пропуск пробельных символов
 
     ...
 
 

После переделки программы она должна показывать следующий результат:

Результат выполнения программы

<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS