Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > записать массив данных в бинарный файл


Автор: alex_smirnov 8.8.2007, 14:59
Уважаемые, имеется задачка:

Допустим, имеется массив a[3][3]:

1 1 1
2 3 2
1 1 1

Как записать его в бинарный файл(видимо в формате ASCII)?

я думаю, что это примерно так:
fprintf(out, "???", a[i][j]);
тогда какой формат использовать?

ну не в 1 и 0 записывать же!)

пишу на СИ.

Автор: Sartorius 8.8.2007, 15:16
Цитата

бинарный файл(видимо в формате ASCII)?


ты определись в бинарный или в ASCII.
 если в ASCII
Код

for( i = 0; i <3; i++)
{
 for( j = 0; j < 3; j++) 
 {
    fprintf(pfOut, "%d ", a[i][j])
 } 
  fprintf(pfOut, "\n");
 }

Автор: alex_smirnov 8.8.2007, 15:24
в бинарный!

добавлено:
просто когда открываешь бинар в любом редакторе отображается аски символы, не так?

Автор: Sartorius 8.8.2007, 16:26
 когда говорят "бинарный файл" - то имеют в виду, что его содержимое соответствует внутреннему представлению данных, а не представлено в виде печатных  ASCII - символов, после некоторых преобразований(которые в вашем случае выполняет printf()) 

binary файл в вашем случае можено было бы получеть вот так
Код


 fwrite(a, sizeof(a), 1, pfOut);


Автор: alex_smirnov 8.8.2007, 16:36
спасибо большое за пояснения!

Автор: alex_smirnov 9.8.2007, 16:41
интересно получается...

при выводе одного и того же массива в файл получается, что:
размер бинарного файла > размера текстового файла.

чем можно объяснить этот феномен?

Автор: nickless 9.8.2007, 21:34
Цитата(alex_smirnov @  9.8.2007,  15:41 Найти цитируемый пост)
чем можно объяснить этот феномен? 

Размер int'а = 4 байта, если число там <= 9999 то соответственно строка будет занимать меньше места.

Автор: alex_smirnov 9.8.2007, 21:51
ясно, спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)