在C中读取/写入二进制文件

有没有人有一个可以写入二进制文件的代码的例子。 还有可以读取二进制文件并输出到屏幕的代码。 看例子,我可以写入文件确定但是,当我尝试从文件读取它不正确的输出。

Solutions Collecting From Web of "在C中读取/写入二进制文件"

读取和写入二进制文件与其他文件几乎相同,唯一的区别是如何打开它:

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 

你看! 数据现在匹配* 。 真棒,我们必须正确读取二进制文件!

*注意字节只是在输出上交换,但数据是正确的,你可以调整这种事情