Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2008, 10:36   #1
Mails
 
Регистрация: 31.03.2008
Сообщений: 6
По умолчанию Запись в файл на С++

Есть целое число, необходимо записать его в нетекстового формата файл так, чтобы это число было ascii кодом. То есть открывая в редакторе, в шестнадцатеричном виде, где указаны коды, мы бы видели не в символах, а именно на месте кода это число.
Mails вне форума Ответить с цитированием
Старый 31.03.2008, 11:23   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Непонятно.
Например число 12345

так ?
000000: | 31 32 33 34 35 ..... | 12345

Тогда число в строку и записываем каждый байт строки

или так ?
000000: | 01 23 45 ..... |

Тогда все равно в строку. Разбиваем на пары символов. Каждую пару символов интерпретируем как 16-ричное число. Преобразуем его в байт и уже его сохраняем в файле. Или то-же самое с остатками от деления на 100.
alexBlack вне форума Ответить с цитированием
Старый 31.03.2008, 11:59   #3
Mails
 
Регистрация: 31.03.2008
Сообщений: 6
По умолчанию

действительно непонятно написал...
например, есть число 186, в 16-ричном это BA, нужно:

000000: | BA 00 12 ..... |
Mails вне форума Ответить с цитированием
Старый 31.03.2008, 12:23   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

и в чем проблема? пишем:
Код:
#include <io.h>
#include <fcntl.h>

void main()
{
	int f;
	int i = 186;
	f = open("C:\\123.txt",_O_CREAT |_O_WRONLY);

	write(f,&i,sizeof(i));
	close(f);
}
и в шестнадцатиричном виде наблюдаем:
00000000: | BA 00 00 00 |
pu4koff вне форума Ответить с цитированием
Старый 31.03.2008, 12:42   #5
Mails
 
Регистрация: 31.03.2008
Сообщений: 6
По умолчанию

спасибо!
я еще не знаком с этим, пытался совсем другим способом ).
подскажите еще, чтоб не копаться, какая функция указатель перемещает, ну типа seek?
Mails вне форума Ответить с цитированием
Старый 31.03.2008, 13:12   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

ну для seek тут мне кажется надо переходить на другие функции для работы с потоковыми файлами:
Код:
#include <stdio.h>

void main()
{
	FILE *f;
	int i = 186, j = 12345;
	f = fopen("C:\\123.txt","w");
	
	fwrite(&j,sizeof(j),1,f);
	fwrite(&j,sizeof(j),1,f);
	fseek(f,SEEK_SET,0); // переходим в начало файла. так же есть: SEEK_END - смещение относительно конца и SEEK_CUR - смещение относительно текущей позиции. третий параметр - смещение 
	fwrite(&i,sizeof(i),1,f);
	fclose(f);
}
мы сначала записываем два раза число 12345. потом переходим на позицию 0, относительно начала и записываем 186, т.е. получается у нас в файле будет сначала 186 записано, а потом 12345
или в шестнадцатиричном виде: 00000000: BA 00 00 00 39 30 00 00
pu4koff вне форума Ответить с цитированием
Старый 31.03.2008, 14:22   #7
Mails
 
Регистрация: 31.03.2008
Сообщений: 6
По умолчанию

спасибо! я разобрался
только вот не fseek(f,SEEK_SET,0); а fseek(f, смещение, SEEK_SET);

дальше изучаем... если что, я к вам )))
Mails вне форума Ответить с цитированием
Старый 31.03.2008, 14:37   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

извиняюсь. напутал )
советую MSDN поставить, если нет. полезнейшая весчь. Даже если английского не знаешь. Меня частенько выручает )
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл Titan123 Общие вопросы Delphi 6 23.08.2008 01:12
Запись в файл [Smarik] Помощь студентам 4 07.05.2008 23:26
Запись в файл С++ Viteks Общие вопросы C/C++ 3 18.04.2008 13:18
запись в файл Prisian Общие вопросы Delphi 6 24.07.2007 13:43