c语言 fread()函数的二进制文件处理方式,该如何解决
c语言 fread()函数的二进制文件处理方式
typedef struct {
int length; /* 数据长度 */
char *data; /* 数据 */
} GraphData;
GraphData graphdata;
我用fopen(filename,"rb");打开一个二进制文件,然后把二进制文件的内容和长度放到以上的结构中,请问如何实现?
用fread()函数来实现的话,需要用循环处理吗,还是用一条语句就可以把文件的内容读入到graphdata.data中去?
问题补充:我读入的是一个JPG文件,所以里面没有数组之类的东西,length是存储JPG文件的长度,data是存储JPG文件的数据用的。
最好能够提供如何向graphdata.data付值的方法。C语言不太熟。
------解决方案--------------------
la了一句:标红的补上
FILE * fp = NULL;
int len;
if(NULL == (fp=fopen(filename,"rb")))
return -1;
fseek(fp,0,SEEK_END);
len = ftell(fp);
fseek(fp,0,SEEK_SET);
graphdata.data = (char *)malloc(len+1);
graphdata.length = fread(graphdata.data,1,len,fp);
graphdata.data[len] = '\0';
fclose(fp);
typedef struct {
int length; /* 数据长度 */
char *data; /* 数据 */
} GraphData;
GraphData graphdata;
我用fopen(filename,"rb");打开一个二进制文件,然后把二进制文件的内容和长度放到以上的结构中,请问如何实现?
用fread()函数来实现的话,需要用循环处理吗,还是用一条语句就可以把文件的内容读入到graphdata.data中去?
问题补充:我读入的是一个JPG文件,所以里面没有数组之类的东西,length是存储JPG文件的长度,data是存储JPG文件的数据用的。
最好能够提供如何向graphdata.data付值的方法。C语言不太熟。
------解决方案--------------------
la了一句:标红的补上
FILE * fp = NULL;
int len;
if(NULL == (fp=fopen(filename,"rb")))
return -1;
fseek(fp,0,SEEK_END);
len = ftell(fp);
fseek(fp,0,SEEK_SET);
graphdata.data = (char *)malloc(len+1);
graphdata.length = fread(graphdata.data,1,len,fp);
graphdata.data[len] = '\0';
fclose(fp);