问题描述
我完成了教程here,效果很好。我b64首先将字符串解码,将其保存到文件中,然后使用inf()
函数对其进行解压缩。
int ret;
char *b64_string = (char *)read_b64_string();
size_t my_string_len;
unsigned char *my_string = b64_decode_ex(my_string,strlen(my_string),&my_string_len);
free(b64_string);
write_decoded_b64_to_file(my_string,my_string_len);
free(my_string);
ret = inf();
int inf()
{
FILE *source;
FILE *dest;
source = fopen("/path/to/my/b64decoded_file/","r");
dest = fopen("/path/to/my/decompressed_file/","w");
现在,我想更改inf()
函数以使其在二进制文件作为参数传递时起作用。
int ret;
size_t my_string_len;
unsigned char *my_string = b64_decode_ex(my_string,&my_string_len);
ret = inf(my_string);
我想我已经确定了这一行
strm.avail_in = fread(in,1,CHUNK,source);
是我必须读二进制文件的那个。 fread
仅适用于文件。如何在没有文件的情况下读取该二进制文件?
解决方法
只需使用fmemopen()
作为文件打开my_string
。
source = fmemopen(my_string,my_string_len,"rb");
(我习惯养成b
中的"rb"
。从不痛苦。可以提供帮助。)