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:
[cpp] view plain#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
}
/*write some data to the file*/
fwrite(msg,1,strlen(msg)+1,stream)
/*seek to the beginning of the file*/
fseek(stream,0,SEEK_SET)
/*read the data and display it*/
fread(buf,1,strlen(msg)+1,stream)
printf("%s\n",buf)
fclose(stream)
system("pause")
return 0
}
DEMO2
[cpp] view plainint main(void)
{
FILE *stream
char list[30]
int i,numread,numwritten
/*open file in text mode:*/
if ((stream=fopen("fread.out","w+t"))!=NULL)
{
for (i=0i<25i++)
{
list[i]=(char)('z'-i)
}
/*write 25 characters to stram*/灶孝
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
}
fread(从文件流读取数据)相关函数 fopen,fwrite,fseek,fscanf
表头文件 #include<stdio.h>
定义函数 size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)
函数说明 fread()用来从文件流中读取数据。
参数stream为已打开的文件指针,
参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。
Fread()会返回 实际 读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生迟段什么情况。
返回值 返回实际读取到的nmemb数目。
附加说明
范例 #include<stdio.h>
#define nmemb 3
struct test
{
char name[20]
int size
}s[nmemb]
main()
{
FILE * stream
int i
stream = fopen(“/缓清tmp/fwrite”,”r”)
fread(s,sizeof(struct test),nmemb,stream)
fclose(stream)
for(i=0i<nmembi++)
printf(“name[%d]=%-20s:size[%d]=%d\n”,i,s[i].name,i,s[i].size)
}
执行 name[0]=Linux! size[0]=6
name[1]=FreeBSD! size[1]=8
name[2]=Windows2000 size[2]=11
=====码哪誉===================
feof(检查文件流是否读到了文件尾)
相关函数 fopen,fgetc,fgets,fread
表头文件 #include<stdio.h>
定义函数 int feof(FILE * stream)
函数说明 feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返回之文件指针。如果已到文件尾则返回非零值,其他情况返回0。
返回值 返回非零值代表已到达文件尾。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)