while(!feof(arc)) { // usually a block of zeroes indicates the end of a bms sprintf(outfilename,"%s_seq%d.bms",filename,count); outbms = fopen(outfilename,"wb"); do { fread(readbuf,1,0x10,arc); fwrite(readbuf,1,0x10,outbms); } while(memcmp(readbuf,"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",0x10)); fclose(outbms); count++; }