|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
||||||
Запись в бинарник и его чтение01.02.2010, 05:37. Показов 2334. Ответов 21
Метки нет (Все метки)
Привет всем, задача состоит в том, что нужно записать в бинарник сведения о сканерах и считать их из него. Проблема в том что нужно в первых 2-х байтах записать количество сканеров. Я сдвигаю курсор на 2 байта и начинаю запись сканеров, затем сдвигаю курсор в начало бинарника и записываю подсчитанное кол-во записей, но когда я читаю из бинарника количество записей (первые 2 байта) выходит примерно 82435947
Помогите пожалуйста, заранее благодарен
0
|
||||||
| 01.02.2010, 05:37 | |
|
Ответы с готовыми решениями:
21
запись и чтение структуры в бинарник Чтение файла (текст+бинарник)
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
| 01.02.2010, 08:20 | |||||||||||
так-то short count;
1
|
|||||||||||
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
||||||
| 01.02.2010, 08:50 [ТС] | ||||||
|
accept, записал так :
Добавлено через 2 минуты accept, тоже самое если printf("Количество записей: %hi", count);
0
|
||||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
| 01.02.2010, 11:22 | |||||||||||
тоже подвис, пока чтение не заметил
1
|
|||||||||||
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
|
| 02.02.2010, 00:47 [ТС] | |
|
Да, я уже разобрался)) надо было поставить "rb", только мне не понятно, почему сканеры выводились на экран, ведь, когда я отрывал поток мой бинарник стерся) не выводилось только кол-во записей
Добавлено через 40 секунд Спасибо за помощь
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 02.02.2010, 01:31 | |
|
у тебя scan глобальная, файл стёрся, а на экран выводился последний сканер
0
|
|
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
|
| 02.02.2010, 01:33 [ТС] | |
|
в том то и дело что выводиться на экран не только одна)
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
| 02.02.2010, 01:38 | ||||||
0
|
||||||
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
|
| 02.02.2010, 02:09 [ТС] | |
|
Блин, у меня еще вывод корявый (( Ввел 3 записи, хочу вывести все строки read_bin(0), выводится первая и 2 раза третья, и вывести отдельно эту строку не могу read_bin(2), выводиться 1 раз третья
Добавлено через 6 минут Ура!!!))) Нашел, я при записи забыл делать сдвиг в байтах fseek(f, sizeof(scan), SEEK_CUR); Добавлено через 2 минуты accept, мне только не понятно почему третья запись не записалась на первую тогда
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
| 02.02.2010, 02:36 | ||||||
1
|
||||||
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
|
| 02.02.2010, 04:39 [ТС] | |
|
Вот теперь все понятно
СПАСИБО
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 02.02.2010, 07:53 | |
|
там может ещё что-то быть, я просто не смотрел
0
|
|
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
|
| 02.02.2010, 07:54 [ТС] | |
|
Да нет, теперь все правильно работает))
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
| 02.02.2010, 10:19 | |||||||||||
но это не считается хорошим стилем, потому что нет очевидности выхода cont лучше определить снаружи цикла и установить его в 'y' а цикл сделать while (cont == 'y') чтение переменной делается через cont = getchar(); у scanf'а %s даже в случае %1s сохраняет два символа (символ и нуль-символ) то есть то, что компилятор не выпал - это просто везение (случайность), так как запись нуль-символа правее переменной типа char может привести к записи в запрещённую область ладно, долго объяснять
0
|
|||||||||||
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
|
| 03.02.2010, 01:41 [ТС] | |
|
а scanf разве не перезаписывает в переменную continie? , дело в том, что когда я ставил scanf("%c, &continie"), то программа вылетала, методом проб и ошибок поставил %s - заработало. Как работает getchar() ? можешь пример простенький привести?(тот же выход из цикла например).
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
| 03.02.2010, 02:54 | |||||||||||
getchar() - это аналогично scanf("%c", (char *) &answer);
0
|
|||||||||||
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
|
| 03.02.2010, 03:29 [ТС] | |
|
а зачем преобразовывать ссылку как указатель на char ?scanf("%c", (char *) &answer) , чего то мы от темы отклонились
![]() Добавлено через 1 минуту что в этом выражении происходит? answer = getchar(); Добавлено через 46 секунд такую запись вообще первый развижу exit(EXIT_SUCCESS); Добавлено через 43 секунды где старый добрый RETURN? Добавлено через 2 минуты и зачем здесь использовать перечисление enum { YES, NO } cont ? Добавлено через 24 минуты как может answer == 'y' если int answer;
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||
| 03.02.2010, 03:45 | |||||
если answer имеет тип char, тогда приведение не нужно getchar может вернуть EOF в случае конца файла и в случае ошибки но когда asnwer имеет тип char, EOF не будет означать EOF, потому что это может быть символ с кодом 0xFF поэтому делают int (долго объяснять опять)
в случае ошибки в answer однозначно запишется EOF, в случае конца файла тоже (стандартный поток ввода - это файл на диске) все символы ASCII положительные, а EOF отрицательный поэтому символ 0xFF не будет отрицательным (а в случае char answer; - будет, так как совпадёт с EOF)
её преимущество в том, что она заканчивает программу из любой функции а return просто делает возврат из функции EXIT_SUCCESS - это просто такой #define в заголовке stdlib.h ну, я думаю, из перевода понятно, что он значит
всё в одном и cont касается только цикла cont можно переключать любым действием, не только одним каким-то
0
|
|||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 03.02.2010, 03:53 | ||
'y' - символьная константа символьная константа равна числу, которое является кодом из символьной таблицы (ASCII например) int может хранить число, которое помещается в sizeof(int) байт (в двоичном представлении) 'y' помещается в одном байте, то есть значение кода символа занимает один байт переменной типа int
0
|
||
|
45 / 30 / 11
Регистрация: 31.10.2009
Сообщений: 200
|
|
| 03.02.2010, 03:55 [ТС] | |
|
Спасибо, теперь буду переваривать)
0
|
|
| 03.02.2010, 03:55 | |
|
Помогаю со студенческими работами здесь
20
Очень медленная запись в бинарник
Запись в бинарный файл, его чтение и редактирование Чтение текста из файла и запись его частей в переменные
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|