#define SINGLE_WRITE_LEN 1024
int dh_save_file(unsigned char *data_buf, int
data_len,
const char
*file_name)
{
int retval
= STATUS_PARSE_OK;
int
remain_len = data_len;
int
writen_len = 0;
int
single_write_len = 0;
FILE *fp =
NULL;
if(data_buf
== NULL || file_name == NULL || data_len <= 0)
{
return STATUS_PARSE_FUNC_PARAM_ERROR;
}
//
打开文件
fp =
fopen(file_name, "wb");
if(fp ==
NULL)
{
return STATUS_PARSE_OPEN_FILE_FAILED;
}
while(remain_len > 0)
{
single_write_len = remain_len >
SINGLE_WRITE_LEN ? SINGLE_WRITE_LEN :remain_len;
writen_len =
fwrite(data_buf+data_len-remain_len, 1, single_write_len,
fp);
if(writen_len < 0)
{
fclose(fp);
return STATUS_PARSE_WRITE_FILE_FAILED;
}
remain_len = remain_len - writen_len;
}
fclose(fp);
return
retval;
}