我有一个二进制文件转储到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
,所以这可能是一个带有正确搜索词的琐碎问题...