#include #include int main(){ FILE *fp; int buf[10]; int i; for(i = 0; i < 10; i++) buf[i] = i; fp = fopen("test", "wb");//二进制打开文件test fwrite(buf, sizeof(int), 10, fp);//将buf写入test fclose(fp); fp = fopen("test", "rb"); fread(buf, sizeof(int), 10, fp); fclose(fp); if(remove("test")) perror("error:"); fp = fopen("test", "wb"); fwrite(buf+4, sizeof(int), 6, fp);//删除前4个int型数字 return 0;}二进制文件和文本文件最终存储的结构是一样的,都是二进制码存储,只不过文本文件读写的时候解码方式是ASCII(把二进制码转换为ASCII码),二进制文件直接使用二进制码。
把一个文本文件读入内存时,要将ASCII码转换成二进制码, 而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码。对二进制文件的读写不存在这种转换。
c操作二进制文件用数据块读写函数:freed和fwrite,而打开文件的使用需要设置二进制读或写。
文本读打开文件fp = fopen ("test", “r”);
二进制读打开文件fp = fopen("test","rb");b就是binary二进制的意思。
参数还有写的w 或wb,添加a,ab等等(具体可查看函数但一般常用就这几个了)。
要将文件数据前移,覆盖待删除的记录,首先要将数据读入,删除,再写入。
重新设置文件结束点:没有文件结束点这个概念,不管什么文件,判断文件是否读取结束时,是根据读入的长度与文件的长度(每个文件存储在磁盘时都有记录文件长度)比较得到。(feof函数实现就是这样)。你将数据写入后,操作系统会自动修改文件长度的。