C中无符号字符指针的前缀?
在C语言中,我将二进制数据从文件读入varC中无符号字符指针的前缀?,c,arrays,pointers,C,Arrays,Pointers,在C语言中,我将二进制数据从文件读入vardata,如下所示: 无符号字符*数据; 数据=malloc(大小); int read_size=fread(数据,1,大小,fp); 我想在var数据前面加上文件的。我如何才能做到这一点? 它不是合法的C字符串,因为它是可能到处都是空字节的二进制数据 我知道要确保为它分配足够的内存,我只是不知道如何实际预处理它。定义自己的存储数据格式: <uint64_t datalength><string name><char[d
data
,如下所示:
无符号字符*数据;
数据=malloc(大小);
int read_size=fread(数据,1,大小,fp);
我想在var数据
前面加上文件的
。我如何才能做到这一点?它不是合法的C字符串,因为它是可能到处都是空字节的二进制数据
我知道要确保为它分配足够的内存,我只是不知道如何实际预处理它。定义自己的存储数据格式:
<uint64_t datalength><string name><char[datalength] contents>
memcpy()
,直接读取,等等fread()
memcpy
有什么问题?它是用于以后的存储/记录还是供程序使用?问题出在哪里?更具体一点。@DavidHeffernanmemcpy
可能就是我要找的。我不知道,我对C有点陌生。说你的尺寸只能达到99999,文件名是fred。您希望数据是fred1还是fred00001?预先分配已知大小很容易,但如果它是可变大小,则需要预先分配最大值,并从数据开始的位置开始。在步骤3中,如何仅获得对其中一部分的引用?Nvm我得到了它。谢谢
struct named_file {
char* contents;
uint64_t datasize;
char name[]; // contents begin directly after the name.
}