|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.10.2012, 15:06 | #1 |
Новичок
Джуниор
Регистрация: 29.10.2012
Сообщений: 4
|
кодировка при записи/считывании в файл/из файла функциям fread и fwrite
Добрый день. Нижеприведенные проги (прога №1 с fread,fwrite и прога №2 с fscanf,fprintf) записывают в файл 5 целых чисел. Из этого же файла считывают эти числа и выводит их на stdout. Обе проги работают нормально. Только вот, почему, когда после записи в файл in.txt посредством fwrite в проге №1, я открываю файл и вижу там "{ кяяя- цяяя7 " вместо "123 -22 301 -10 55", в то время как прога №2 записывает в файл out.txt "123 -22 301 -10 55" вместо всякой белиберды?
тоже самое происходит, если я попытаюсь ручками напечатать в блокноте 5 целых чисел через пробел, сохраню его, а потом попытаюсь прочитать это с помощью fread, где *ptr будет указывать на массив из 5и элементов типа инт, в то время как fscanf-ом это отлично читается. Тип char fread читает с блокнота без проблем. По-скольку не могу нормально считывать целые числа из текстовых редакторов с помощью fread, то не могу и структуры с целыми числами считывать. застопорился, вообщем :'( Подскажите, в чем дело? покопался в интернете, ответа не нашел( в примерах это не описывается. и если можно, объясните разницу между "wt" и "wb". Знаю, что t - текстовый, а b - двоичный. прочитал, что : "Файл можно открывать либо в текстовом, либо в двоичном режиме. В текстовом режиме выполняются преобразования некоторых символов. Например, символы новой строки преобразуются в комбинацию кодов возврата каретки (ASCII 13) и конца строки (ASCII 10). В двоичном режиме подобные преобразования не выполняются." Разве разница только в обработке символов перехода на новую строку? не могу уловить суть если можно, какие-то примеры приведите. буду благодарен... *********************************** **************** ПРОГА с FREAD,WRITE *********************************** *************** Код:
ПРОГА со FSCANF, FPRINTF *********************************** *************** Код:
среда - Visual Studio 2010 C++ |
29.10.2012, 15:29 | #2 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
FWrite предназначено для записи в бинарном виде. У тебя описан массив типа int, это значит что каждый элемент представляется набором из 4-х байт, описывающих в машинном представлении указанное тобой число (числа). Вот так в таком машинном виде, как это число и записано в памяти эта функция толкает его в файл, а просмотрщик просто пытается эти 4 байта интерпретировать как символы. FPRINTF же перед записью в файл переводит в читабельную для человека форму - в текст. Таким образом в файл попадает текстовое представление числа в машинном коде. Потому файл от второй программы читается в блокноте по человечески. Читай учебники внимательнее Цитата:
I'm learning to live...
|
||
29.10.2012, 15:58 | #3 |
Новичок
Джуниор
Регистрация: 29.10.2012
Сообщений: 4
|
я только учусь)
спасибо. скачал редактор двоичных файлов. открыл им "in.txt". Теперь у мну есть прямое соответствие между тем, делает программа и тем, что вижу. Т.с. сработал переключатель в голове) спасибо) хм. как закрыть тему? Последний раз редактировалось Stilet; 29.10.2012 в 16:19. |
29.10.2012, 16:18 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Никак. Закрывать ее не надо, в ней нет нарушений.
I'm learning to live...
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
доступ по неверному указателю при построчном считывании данных из файла | okrill | Общие вопросы C/C++ | 3 | 01.09.2012 19:07 |
Дублирует структуру при считывании из файла | RaTeN | Общие вопросы C/C++ | 2 | 05.10.2011 00:28 |
Кодировка при чтении из файла | _-Re@l-_ | Общие вопросы .NET | 2 | 21.11.2010 20:12 |
Проблема при считывании из файла | JeyKip | Общие вопросы C/C++ | 0 | 17.01.2010 22:03 |
Помогите разобраться, ошибка при считывании из ini файла | XATAB | Помощь студентам | 4 | 13.02.2007 05:57 |