fread函数

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:29:49
1.假设有一个文档,里面记录了学生的信息,且在有一个相对应的结构体,能不能用fread函数将文档里的信息赋给结构体?
2.还有请说明一下fread和fscanf的区别.
3.有人说fread只能进行二进制文件的操作,对吗?
谢谢大家..

1.可以 存储时是按照结构体大小存的话 你就可以直接按大小取出 例如
struct Date {
int Day;
int Month;
int Year;
};
struct Date *d1;
fwrite( d,sizeof(Date), 1, fp);//这样写出
struct Date *d2;
fread( d2, sizeof(Date), 1, fp);//这样写入就好了

#include <stdio.h>
int fread( void *buffer, size_t size, size_t num, FILE *stream );
函数fread()读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量...

int fscanf( FILE *stream, const char *format, ... );
函数fscanf()以scanf()的执行方式从给出的文件流中读取数据. fscanf()的返回值是事实上已赋值的变量的数,如果未进行任何分配时返回EOF.

3.不对 是根据你 是根据你FILE fp=fopen();定义
FILE *fopen( const char *fname, const char *mode );
fopen()函数打开由fname(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL. mode(方式)是用于决定文件的用途(例如 用于输入,输出,等等)
Mode(方式) 意义
"r" 打开一个用于读取的文本文件
"w" 创建一个用于写入的文本文件
"a" 附加到一个文本文件
"rb" 打开一个用于读取的二进制文件
"wb