Форум программистов CodeGuru
18 Январь 2018, 16:12:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ерунда какая-то  (Прочитано 2680 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MaxLovic
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« : 23 Май 2010, 16:17:59 »

Всем привет!
Разбирался в чужой программе, запустил, получил в результате некоторый файл (см. приложение).
Размер 16,1 Кбайт. Когда начинаю его читать, начинается какая-то ерунда, которую я никак не могу понять.
Код:
FILE *finput;

finput = fopen("lena_mars.fif","r");
unsigned char tmp_char;
int count = 0;
for (;;) {
tmp_char = fgetc(finput);
count++;
if (tmp_char == 89)
tmp_char = tmp_char;
}
Почему-то читается 226 символов (код последнего 86), и после этого все читаются с кодом 255. Я уже исчерпал все идеи. Первая программа все пишет, не нашел ни ошибки в смене указателя на файл, ничего другого, все нормально пишется. Второй читает, но после 226-го символа только коды 255.
Открываю файл в текстовом редакторе - повторений нет (если бы в конце все было 255, то символы были бы одинаковыми на глаз, имхо).

В общем я вообще уже ничего не понимаю. Помогите!!!)))) В файле действительно 255 после 226-го символа?
http://www.sharemania.ru/0268674
Записан
Decantor
Интересующийся
**
Офлайн Офлайн

Сообщений: 20



Просмотр профиля
« Ответ #1 : 25 Май 2010, 19:48:34 »

Похоже, что так.
Записан
MaxLovic
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #2 : 25 Май 2010, 21:00:30 »

Нет, на самом деле там символ конца файла.
Записан
Valery
Пользователь
***
Офлайн Офлайн

Сообщений: 83


Просмотр профиля
« Ответ #3 : 28 Май 2010, 21:12:54 »

for (;Подмигивание {
      tmp_char = fgetc(finput);
      count++;
      if (tmp_char == 89)
         tmp_char = tmp_char;
   }
цикл Бесконечный?

tmp_char = tmp_char;
что сия алегория означает?

Записан
MaxLovic
Интересующийся
**
Офлайн Офлайн

Сообщений: 15


Просмотр профиля
« Ответ #4 : 29 Май 2010, 07:59:22 »

Это цикл для отладки, потому и бесконечный. А на
tmp_char = tmp_char;
можно поставить брэйкпоинт. Короче там нужно было в двоичном виде файл открывать, иначе он на считывал символ конца файла и сваливался.
Записан
Valery
Пользователь
***
Офлайн Офлайн

Сообщений: 83


Просмотр профиля
« Ответ #5 : 29 Май 2010, 20:04:41 »

tmp_char = tmp_char;
можно поставить брэйкпоинт. Короче там нужно было в двоичном виде файл открывать, иначе он на считывал символ конца файла и сваливался.

символ  if (tmp_char == 89)
 шеснадцетиричный  0х59 Ansi  ; (как показал мне Блокнот)
Ты уверен что у тебя везде есть этот символ
if (tmp_char == 89)
         tmp_char = tmp_char;
короче есть программы которые показывают содержимое HEX виде (например WinHex)
открой в нем 
к сожалению твоя ссылка у меня не работает не могу сказать что за файл
смотри внимательно на цикл, гдето ошибка
С важением Валерий
Записан
Valery
Пользователь
***
Офлайн Офлайн

Сообщений: 83


Просмотр профиля
« Ответ #6 : 29 Май 2010, 20:08:46 »

я понял где ошибка
finput = fopen("lena_mars.fif","r");
где написано что открываем бинарник
с Уважением Валерий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!