fwrite(p,sizeof(struct student),1,fp);
你这样写的话,要把1转成'1'才行,
你这样写还有一个问题。
你没有写出struct student这个结构体是怎么定义的,我假设你的struct student是这样定义的:
struct student{
char name[20];
int
age ;
};
那么,每次执行fwrite(p,sizeof(struct student),1,fp); 的时候都会写入24个字符,不管name有多长,都会写入24个字符进去,这样是很不合理的。
合适的做法是这样的:
方法一:用fprintf替代fwrite。
方法二:在用fwrite写入文件之前,用malloc分配一块内存:
void* buff = malloc(sizeof(...))
然后将将*p指向的结构里面的内容转成一个字符串,存入buff中,然后用fwrite写入。
当然第二种方法比较麻烦。
方法三:用freopen()
这个函数怎么用,我就不解释了。自己去搜索!
最后说句题外话,Windows下操作文件的适合要注意‘二进制’模式,通常在给txt文件写数据的时候不用二进制形式,往bmp、mp3等非二进制文件里面写数据的适合一定要用二进制模式。
在Linux/UNIX平台下,'二进制'模式和常规的模式是一样的。
ps:
我刚来这个论坛的时候,版主还是御坂美琴,好久没来,发现换了好多版主了。。。时间过得真快啊。
[
本帖最后由 thlgood 于 2012-8-23 02:02 编辑 ]