![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| zhenium |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.10.2006 Репутация: нет Всего: 2 |
Добрый вечер всем.
Вот у меня такой вопрос: если с помощью функции fwrite() записать в тхт-файл массив с несколькими числами, то в итоге получим в файле набор символов, а не цифр? Или я что-то делаю не так? Разъясните, кому не влом, думаю это простой ворпос... |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
А какого типа массив?
|
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
zhenium,
fwrite() записывает последовательность байтов. Если у тебя массив типа int, то в файл будет записываться двоичное представление этих чисел.Например, число 255 для int 2-байтового: представление - 00 FF в 16-ричном коде. В память запишется как FF 00 (даже в перевернутом виде). Для записи именно цифрового представления числа его придется преобразовать к строку или использовать функцию fprintf() с соответствующими параметрами Это сообщение отредактировал(а) Kuvaldis - 21.10.2006, 23:32 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| zhenium |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.10.2006 Репутация: нет Всего: 2 |
У меня массив типа int.
>>> Kuvaldis:
Подскажи, как это выполнить. С fprintf() всё вроде понятно... |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
zhenium,
Есть функциz itoa() если пишешь в Builder, то IntToStr() -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
zhenium,
|
|||
|
||||
| zhenium |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.10.2006 Репутация: нет Всего: 2 |
Я пишу в Borland C++ 3.1 и в Dev-C++. Какие параметры нужно передавать в эту функцию? |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
zhenium,
а F1 нажать ты не пробовал? Из справки Builder
Это сообщение отредактировал(а) Kuvaldis - 22.10.2006, 00:15 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| zhenium |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.10.2006 Репутация: нет Всего: 2 |
В общем, чтобы сильно вас не пытать, приведу текст программы на Си. Её суть такая: генерируются числа, записываются в тхт-файл, затем оттуда считываются и выводятся на экран. Для записи нужно использовать функцию fwrite() ( по условию ). В массив нужно присвоить данные, считанные из файла. Что не делаю, а на экран выводятся нули. Помогите исправить.
P.S. Код написан в Dev-C++... Заранее благодарен!
Это сообщение отредактировал(а) zhenium - 22.10.2006, 00:18 |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
zhenium,
Замечания: 1. ты открываешь файл для записи "wb", но пытаешься читать из него. Нехорошо. По правилам хорошего тона программирования надо сначала открыть файл для записи, записать, закрыть файл. Потом открыть файл для чтения, прочитать, закрыть файл. 2. При работе с файлами надо, желательно использовать или функции типа fprintf() или fread(). Ты записываешь в выходной файл через fprintf()символьную строку, которая является массивов байт. При чтении fread() данная строка рассматривается как представление 2-х байтового int. т.е. вместо например, "12" компитятор рассматривает число, образованное 2 байтами, в которых записаны коды символов 1 и 2. (этот момент я в исправленном коде выбросил) исправленный код
Это сообщение отредактировал(а) Kuvaldis - 22.10.2006, 00:39 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| zhenium |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.10.2006 Репутация: нет Всего: 2 |
>>> Kuvaldis
Низкий поклон за помощь!!! Сам бы кучу времени потратил бы на поиск ошибок... |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
zhenium,
Чтобы научиться программировать, нужно программировать (@ Brian Kernigan) Старайся, если что обращайся Это сообщение отредактировал(а) Kuvaldis - 22.10.2006, 10:27 -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| zhenium |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.10.2006 Репутация: нет Всего: 2 |
Спасибо тебе за совет.
Кстати, последние недели этим по большей части и занимаюсь. В универе у нас на лекциях только общие моменты дают, а требуют серьёзно. Предмет этот у нас профильный. Поэтому самообразованием занимаюсь: по книге, да на этом форуме иногда появляюсь, всё же легче, чем за преподом бегать с каждым вопросом. Да и самому интересно очень... Сегодня вот почти весь день разбирался с принципами работы с файлами. Ну вроде более-менее разобрался. Всё вроде гладко шло, пока до бинарного ввода/вывода не дошёл. Но ты помог на этом поставить точку. За это ещё раз Спасибо! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |