fread()函数---- Reads data from a stream.
#include<stdio.h>
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
从一个文件 流中读数据 ,读取 count 个元素 , 每个元素 size 字节.如果调用成功返回 count. 如果调用成功则实际读取 size*count 字节
buffer的大小至少是 size * count 字节.
return:
fread returns the number of full items actually read
实际读取的元素数.如果返回值与 count (不是 count*size )不相同,则可能文件结尾或发生错误.
从ferror和feof获取错误信息或检测是否到达文件结尾.
DEMO:
#include <stdio.h> #include <process.h> #include <string.h> int main() { FILE *stream; char msg[]= "this is a test" ; char buf[20]; if ((stream=fopen( "dummy.fil" , "w+" ))==NULL) { fprintf(stderr,"cannot open output file.\n" ); return 1; } fwrite(msg,1,strlen(msg)+1,stream); fseek(stream,0,SEEK_SET); fread(buf,1,strlen(msg)+1,stream); printf("%s\n" ,buf); fclose(stream); system("pause" ); return 0; }
DEMO2
int main( void ) { FILE *stream; char list[30]; int i,numread,numwritten; if ((stream=fopen( "fread.out" , "w+t" ))!=NULL) { for (i=0;i<25;i++) { list[i]=(char )( 'z' -i); } numwritten=fwrite(list,sizeof ( char ),25,stream); printf("Wrote %d items\n" ,numwritten); fclose(stream); } else printf("Problem opening the file\n" ); if ((stream=fopen( "fread.out" , "r+t" ))!=NULL) { numread=fread(list,sizeof ( char ),25,stream); printf("Number of items read =%d\n" ,numread); printf("Contents of buffer=%.25s\n" ,list); fclose(stream); } else { printf("File could not be opened\n" ); } system("pause" ); return 0; }
【FROM MSDN &&百科】