📄 l_save.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <windef.h>
//#include "stdafx.h"
#include "l_save.h"
/* *********************************************************************** */
//功能:
// 游戏存储函数;
//参数:
// filename : 文件的名字;
// buf_length : 结构的长度;
// buf_point : 结构的引用;
//例子:
// Lgame_save ( fp ,size (test) ,(char *)&test );
/* *********************************************************************** */
void Lgame_save ( FILE * fp ,DWORD buf_length ,char * buf_point )
{
char compress_backup;
COMPRESS_PLAN compress_save;
UNCOMPRESS_BYTE uncompress_byte; //没有压缩前的字节数;
int i=0;
compress_save.compress_count = 1;
uncompress_byte.uncompress_byte = buf_length;
fwrite( &uncompress_byte, sizeof( uncompress_byte ), 1, fp );
while ( buf_length )
{
compress_save.compress_string=*buf_point;
buf_point++;
compress_backup=*buf_point;
if (compress_save.compress_string != 0 )
{
fwrite (&compress_save.compress_string,1,1,fp);
}
else
{
if ( compress_save.compress_string == compress_backup &&buf_length!=1)
{
compress_save.compress_count++;
}
else
{
fwrite( &compress_save, sizeof( compress_save ), 1, fp );
compress_save.compress_count=1;
}
}
buf_length -=1;
}
}
/*
void Lgame_save ( FILE * fp ,DWORD buf_length ,char * buf_point )
{
char compress_backup;
COMPRESS_PLAN compress_save;
UNCOMPRESS_BYTE uncompress_byte; //没有压缩前的字节数;
compress_save.compress_count = 1;
uncompress_byte.uncompress_byte = buf_length;
fwrite( &uncompress_byte, sizeof( uncompress_byte ), 1, fp );
while ( buf_length )
{
compress_save.compress_string=*buf_point;
buf_point+=1;
compress_backup=*buf_point;
if ( compress_save.compress_string == compress_backup &&buf_length!=1)
{
compress_save.compress_count++;
}
else
{
fwrite( &compress_save, sizeof( compress_save ), 1, fp );
compress_save.compress_count=1;
}
buf_length -=1;
}
// if ( compress_save.compress_count > 1 )
// fwrite( &compress_save, sizeof( compress_save ), 1, fp );
}*/
/*
void Lgame_load ( FILE *fp ,DWORD buf_length ,char * buf_point )
{
UNCOMPRESS_BYTE uncompress_byte; //没有压缩前的字节数;
COMPRESS_PLAN compress_Load;
fread ( &uncompress_byte ,sizeof ( uncompress_byte ) ,1 ,fp );
while ( uncompress_byte.uncompress_byte )
{
fread ( &compress_Load ,sizeof (compress_Load) ,1 ,fp );
uncompress_byte.uncompress_byte -= compress_Load.compress_count;
memset ( buf_point ,compress_Load.compress_string ,compress_Load.compress_count );
buf_point += compress_Load.compress_count;
}
}
*/
void Lgame_load ( FILE *fp ,DWORD buf_length ,char * buf_point )
{
UNCOMPRESS_BYTE uncompress_byte; //没有压缩前的字节数;
COMPRESS_PLAN compress_Load;
fread ( &uncompress_byte ,sizeof ( uncompress_byte ) ,1 ,fp );
while ( uncompress_byte.uncompress_byte )
{
fread ( &compress_Load.compress_string,1,1,fp);
if ( compress_Load.compress_string == 0 )
{
fread (&compress_Load.compress_count,4,1,fp);
uncompress_byte.uncompress_byte -= compress_Load.compress_count;
memset ( buf_point ,compress_Load.compress_string ,compress_Load.compress_count );
buf_point += compress_Load.compress_count;
}
else
{
*buf_point = compress_Load.compress_string;
buf_point ++;
uncompress_byte.uncompress_byte --;
}
}
}
short test (char * test_buf ,DWORD buf_length ,char *buf_point )
{
memcpy ( test_buf ,buf_point ,buf_length );
return ( 1 );
}
short testcmp (char * test_buf ,DWORD buf_length ,char *buf_point )
{
DWORD i;
for (i = 0; i<buf_length; i++ )
{
if ( *test_buf != *buf_point)
{
return ( 0 );
}
test_buf++;
buf_point++;
}
return ( 1 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -