C语言fread()函数:从文件流中读取数据
头文件:#include <stdio.h>
fread()函数用于从文件流中读取数据,其原型为:
size_t fread(void *buffer, size_t size, size_t count, FILE * stream);
【参数】buffer为接收数据的地址,size为一个单元的大小,count为单元个数,stream为文件流。
fread()函数每次从stream中最多读取count个单元,每个单元大小为size个字节,将读取的数据放到buffer;文件流的位置指针后移 size * count 字节。
【返回值】返回实际读取的单元个数。如果小于count,则可能文件结束或读取出错;可以用ferror()检测是否读取出错,用feof()函数检测是否到达文件结尾。如果size或count为0,则返回0。
与fread()相对应的函数为fwrite(),fread() 和 fwrite() 一般用于二进制文件的输入输出,ASCII文件还是不要考虑了。
【实例】创建一个文件并写入一段数据,然后读取出来。
Wrote 25 items
Number of items read =25
Contents of buffer = zyxwvutsrqponmlkjihgfedcb
程序首先建立一个新文件,for 循环从字符 'z' 倒序逐个添加到一个数组中;然后使用fwrite()函数写入文件流,关闭 该文件流;最后使用fread()函数读取存放在list数组中,以字符串的形式显示出来,关闭该文件流。
fread()函数用于从文件流中读取数据,其原型为:
size_t fread(void *buffer, size_t size, size_t count, FILE * stream);
【参数】buffer为接收数据的地址,size为一个单元的大小,count为单元个数,stream为文件流。
fread()函数每次从stream中最多读取count个单元,每个单元大小为size个字节,将读取的数据放到buffer;文件流的位置指针后移 size * count 字节。
【返回值】返回实际读取的单元个数。如果小于count,则可能文件结束或读取出错;可以用ferror()检测是否读取出错,用feof()函数检测是否到达文件结尾。如果size或count为0,则返回0。
与fread()相对应的函数为fwrite(),fread() 和 fwrite() 一般用于二进制文件的输入输出,ASCII文件还是不要考虑了。
【实例】创建一个文件并写入一段数据,然后读取出来。
#include <stdio.h> void 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" ); } }运行结果:
Wrote 25 items
Number of items read =25
Contents of buffer = zyxwvutsrqponmlkjihgfedcb
程序首先建立一个新文件,for 循环从字符 'z' 倒序逐个添加到一个数组中;然后使用fwrite()函数写入文件流,关闭 该文件流;最后使用fread()函数读取存放在list数组中,以字符串的形式显示出来,关闭该文件流。