// writefile.cpp : Defines the entry point for the console application. // #include <stdio.h> #include <time.h> #include <process.h> const long I_FRAME_SIZE = 1400*15; const long P_FRAME_SIZE = 1400*2; const long I_FRAME_INTERVAL = 70; const long WRITE_TOTAL_SIZE = 1024*1024*100; // 20M const long FILE_HEADER = 2048; // 文件头大小 // 二进制文件读写 void write_file( const char * const outFileName ) { FILE *outfile = fopen( outFileName, "w" ); // 打开文件出错 if ( NULL == outfile ) { fprintf( stderr, "open file '%s' failed./n", outFileName ); return ; } unsigned char *dataBuff = new unsigned char[I_FRAME_SIZE]; // 写文件头 int writeResult = fwrite( dataBuff, 1, FILE_HEADER, outfile ); if ( -1 == writeResult ) { printf( "write file header '%s' failed./n", outFileName ); delete []dataBuff; return; } // 写数据 unsigned long writeSize = writeResult; for( unsigned long i = 1; writeSize < WRITE_TOTAL_SIZE; i++ ) { // 写文件 if ( 0 == (i % I_FRAME_INTERVAL ) ) { // 写I帧 writeResult = fwrite( dataBuff, 1, I_FRAME_SIZE, outfile ); } else { writeResult = fwrite( dataBuff, 1, P_FRAME_SIZE, outfile ); } if ( -1 == writeResult ) { printf( "write file '%s' failed./n", outFileName ); break; } writeSize += writeResult; fseek( outfile, 0L, SEEK_SET); // 写文件头 writeResult = fwrite( dataBuff, 1, FILE_HEADER, outfile ); if ( -1 == writeResult ) { printf( "write file header '%s' failed./n", outFileName ); break; } fseek( outfile, 0L, SEEK_END); } fflush( outfile ); fclose( outfile ); delete []dataBuff; } int main(int argc, char* argv[]) { time_t startTime = time(NULL); write_file( "d://sun.txt" ); time_t endTime = time(NULL); printf( "run time:%ds/n", endTime - startTime ); system( "pause" ); return 0; }