![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Night_xxx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 7.1.2007 Где: Набережные Челны Репутация: 0 Всего: 0 |
Так у даны два типа данных char и int. Для записи в файд нужно интерпритировать все данные в тип char* . Значит надо интерпритировать тип int в char*. Я сделал, но у меня что-то неверно с интерпритайией, т.е. вводим:
Номер------- 0 Name-------- petr Age----------- 18 И в файл записывается: petr 0 //Т.е. тип int я неправильно интерпритировал Подскажите как надо плиз
|
|||
|
||||
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 21 Всего: 92 |
почему оператор << не используете?
ну если все таки по вашему:
также можно использовать itoa() или sprintf() а reinterpret_cast<char*>(&age) просто говорит о том, чтобы рассматривать данные, лежащие по адресу переменной age как массив символов, что не является конвертацией |
||||
|
|||||
Night_xxx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 7.1.2007 Где: Набережные Челны Репутация: 0 Всего: 0 |
Так напигите мне полностью рабочую программу, а то я че то не догоняю.
Я написал как было написано в книге, если что-то неправильно так исправьте мне чтобы все работало |
|||
|
||||
Night_xxx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 7.1.2007 Где: Набережные Челны Репутация: 0 Всего: 0 |
Так что никто не может написать мне чтоб все правильно записывало???????????!!!!!!!
|
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 19 Всего: 50 |
По идее так:
|
|||
|
||||
Night_xxx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 7.1.2007 Где: Набережные Челны Репутация: 0 Всего: 0 |
Xenon, все осталось так как есть, например вводим:
Введите номер записи -------- 0 Введите имя --------------------- name Введите age --------------------- 18 И в итоге в файле видим следующее: name 0 ////////////////////и так далее всегда на месте где должно было быть значение age выходит 0 Так все тип int почему неправильно интерпретируется.... Вопрос все ещё открыт. Что же я делаю не так??? |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 19 Всего: 50 |
Night_xxx, Ты как считываешь? Код в студию. Если ты открываешь файл в текстовом в редакторе, то ... да ...
|
|||
|
||||
Night_xxx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 7.1.2007 Где: Набережные Челны Репутация: 0 Всего: 0 |
А какая разница где открывать , главное что все таки в них записывается?
Так что Xenon, у тебя так как надо выходит в редакторе (куда записывали age записано нужное значение)? Так если записывали значение с типом char все ведь правильно записывается. Поясни подробнее в чем дело в моей программе(почему всегда на месте куда записывали age находятся нули) . Че то я нихрена не понял |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 21 Всего: 92 |
||||
|
||||
Night_xxx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 7.1.2007 Где: Набережные Челны Репутация: 0 Всего: 0 |
Да я хочу тип int преобразовать в char. И как правильно модифицировать. Напишите полностью рабочую программу, чтобы работала как надо.
|
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 19 Всего: 50 |
Поскольку char рассматривается как char при записи, то в файле его ты видишь нормально, а int когда рассматриваешь как char и пишешь в файл, то сам понимаешь, что фиг знает как нарезаный int может выглядеть там как угодно. Тебе нужно все вернуть назад, то есть не в редакторе читать, а в программе читать. Ты же бинарно пишешь.
|
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 50 Всего: 88 |
Night_xxx, если ты хочешь, что бы тебе помогли, то посиди минут 10, подумай спокойно, сформулируй задачу, ибо я, например, уже часа 2 наблюдаю за твоей перепиской и до сих пор ни фуя не понял: 1. зачем ты пишешь в бинарный файл, а не в текстовый? 2. зачем int в char переводить? 3. зачем printf, gets, cout, cin и т.д. всё вместе перемешано? Ну, и так далее... -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Night_xxx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 7.1.2007 Где: Набережные Челны Репутация: 0 Всего: 0 |
Так в начале отвечу
Dov, 1)пишу в бинарный файл, т.к. потом мне будет легче искать там нужные значения (а тут я только выложил непонятную мне часть програмки); 2)перевожу int в char так как у меня есть ещё тип int в условии (для поля age) , и я прочитал в книге чтобы привести тип int к типу char необходимо использовать оператор reinterpret<char*> А вообще это приведение необходимо так как при работе с двоичными файлами нужен только тип char* 3)А что в этом такого!!!!!!!!!!!!!!!!! Ну теперь ладно видимо так кашу не сваришь, вообщем я продвинулся дальше и теперь изложу следующее событие, вызывающее у меня непонимание: Вначале программа:
Теперь что мне непонятно: Вводим: Имя файла ---------- fail Вначале в меню выбираем записать значения (1) Номер записи--------- 0 Name-------------------- name Age---------------------- 13 Продолжаем Номер записи--------- 1 Name-------------------- nameeeee Age---------------------- 15 Продолжаем Номер записи--------- 2 Name-------------------- nameeeeeeeeee Age---------------------- 18 Выходим в меню Выбираем чтение Прочитать запись ----0 Все правильно вывелось Прочитать запись-----1 Все правильно вывелось Прочитать запись-----2 И как ни странно я не нахожу тут своей последней записи, вместо этого выходит запись 1. Вообщем последняя запись не записывается, а почему?????????? Ответьте мне на этот вопрос ответом, а ни приветом |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 19 Всего: 50 |
У тебя вообще сплошная жесть, а не код. Мешать стиль - плохой тон. Ты либо в С++ пиши, либо уж в С, а то такую мешанину читать не очень удобно.
Потом, ты определяешь новую переменную fstream fbin(filename, ios::binary| ios::in| ios::out); и открываешь файл, затем в zapici() ты опять открываешь тот же файл. Зачем создавать переменную на чтение/запись, если ты либо читаешь, либо пишешь ... Тут может быть что угодно, вплоть до того, что у тебя файл старый с данными уже записаными перезаписынами вкривь и вкось. PS. Что за цикл switch без break`ов? Это сообщение отредактировал(а) Xenon - 30.3.2007, 22:54 |
|||
|
||||
Night_xxx |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 7.1.2007 Где: Набережные Челны Репутация: 0 Всего: 0 |
Да теперь я понял что ты
Xenon, объяснил мне насчет приведения типа int в char. С этим все ясно. Но как и с первым случаем когда я age использую как тип int так и по-другому, когда я исрользую age в типе char При записи последняя запись не записывается !!!!!!!! Ну напишите мне мой последний выложенный вариант правильно, чтобы все записывалось. Ну а насчет смешения стилей я ни думал что как-то может повлиять на правильность программы. Ну все таки исправьте мой последний код правильно или укажите точно на мою ошибку. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |