将char数组映射到char缓冲区

时间:2019-03-24 18:18:34

标签: c

我有一个二进制文件转储到char数组中。文件的某些部分可以与struct s1关联。根据{{​​1}}中的值,将有struct1个字节,然后才能分配另一个N。我想将这N个字节读到另一个数组中,并将它们传递到其他地方,但是我还没有弄清楚如何做到这一点。以下是我的尝试。

struct struct2

我尝试如下创建一个for循环来填充#include <stdlib.h> #include <stdio.h> struct s1{ int x; int y; int N; }; int main(){ FILE *fp; fp = fopen("myfile.xyz", "rb"); fseek(fp, 0, SEEK_END); int sz = ftell(fp); fseek(fp, 0, SEEK_SET); // Populate buffer unsigned char buffer[sz]; fread(buffer, sz, 1, fp); char *pos = (char*) buffer; // current pos pointer to file buffer // map s1, starting at pos struct s1 *s1 = (struct s1*) pos; // extra code parsing of s1... pos += sizeof(struct s1); // increment pointer to after struct int N = 10; // should be read from s1 (i.e. it is not(!) a static number) char *temp = (char*) malloc((N+1)*sizeof(char)); // assign temp to be N bytes, starting at pos... // parse_temp(temp); pos += N; free(temp); return 0; };

temp

,但两个版本均未编译。还感觉这种方法击败了仅以与结构相同的方式映射数组的想法,因为for(int i=0; i<N; i++){ *temp[i] = (char *) (pos+i); //both temp[i] and *temp[i]... }; 是一个新的内存块,没有使用“指针到原始内存”的想法希望struct-casting在做。

我正在慢慢学习temp,所以这可能是一个带有正确搜索词的琐碎问题...

0 个答案:

没有答案