p*******n 发帖数: 273 | 1 I want to read data from files, and the format of data is below:
struct sac
{ struct header hdr;
float * data;
} sacbin;
I try fread(&sacbin.hdr,sizeof(struct header),1,fp), but it does not work.
I don't know why. Thank you! | s***e 发帖数: 122 | 2 看来是因为这一句:
fread(&sacbin, sizeof(header), 1, fpr);
要改成
fread(&sacbin, sizeof(struct header), 1, fpr);
如果你是用C编译器的话。
当然你也可以定义struct header为typedef struct header {...} HEADER; 那样你就可以用sizeof(HEADER)了。
下面这段代码是可以编译运行的。
#include
struct header {
int hd;
};
struct sac
{
struct header hdr;
float * data;
};
void test2() {
const char * const fn = "test2.txt";
FILE* fpw = fopen(fn, "w");
struct header hdr;
hdr.hd = 18;
fwrite(&hdr, sizeof(hdr), 1, fpw);
fclose(fpw | p*******n 发帖数: 273 | 3 Thank you a lot!
就可以用sizeof(HEADER)了。
【在 s***e 的大作中提到】 : 看来是因为这一句: : fread(&sacbin, sizeof(header), 1, fpr); : 要改成 : fread(&sacbin, sizeof(struct header), 1, fpr); : 如果你是用C编译器的话。 : 当然你也可以定义struct header为typedef struct header {...} HEADER; 那样你就可以用sizeof(HEADER)了。 : 下面这段代码是可以编译运行的。 : #include : struct header { : int hd;
|
|