Произвольное генерирование двумерного случайного числа на основе одного семени

Чтение и запись двоичных файлов в значительной степени аналогично любому другому файлу, единственное различие заключается в том, как вы его открываете:

unsigned char buffer[10];
FILE *ptr;

ptr = fopen("test.bin","rb");  // r for read, b for binary

fread(buffer,sizeof(buffer),1,ptr); // read 10 bytes to our buffer

Вы сказали, что можете его прочитать, но он не выводится правильно. .. Имейте в виду, что когда вы «выводите» эти данные, вы не читаете ASCII, так что это не похоже на печать строки на экране:

for(int i = 0; i<10; i++)
    printf("%u ", buffer[i]); // prints a series of bytes

Запись в файл в значительной степени то же, за исключением того, что вы используете fwrite() вместо fread() :

FILE *write_ptr;

write_ptr = fopen("test.bin","wb");  // w for write, b for binary

fwrite(buffer,sizeof(buffer),1,write_ptr); // write 10 bytes from our buffer

Поскольку мы говорящий Linux .. есть простой способ сделать проверку здравомыслия. Установите hexdump в вашей системе (если он еще не существует) и выгрузите файл:

mike@mike-VirtualBox:~/C$ hexdump test.bin
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0001 003e 0001 0000 0000 0000 0000 0000
...

Теперь сравните это с вашим выходом:

mike@mike-VirtualBox:~/C$ ./a.out 
127 69 76 70 2 1 1 0 0 0

хм, возможно измените printf на %x, чтобы сделать это немного яснее:

mike@mike-VirtualBox:~/C$ ./a.out 
7F 45 4C 46 2 1 1 0 0 0

Эй, смотрите! Теперь данные совпадают *.

* Обратите внимание, что байты просто заменяются на выходе, но эти данные верны, вы можете настроить этот тип вещей

0
задан nOvoid 26 February 2015 в 12:55
поделиться