fread与fread_s读取文件(二进制文件)
fread()是c库函数,利于移植,使用缓存,效率较read()高。
原型:
size_t fread(void *buffer, size_t size, size_t count, FILE * stream);
要注意的是它的返回值,如果读取到了文件尾,返回值小于count,可以使用feof()函数检测出来,返回真。
PS:返回值代表的是某种类型的size的个数。
下面程序按照1024k(一次大小为sizeof(char))一次读取二进制文件。
include <stdio.h> #include <string.h>#define BUFFSIZE 1024int main(int argc, char **argv){char buff[BUFFSIZE];FILE *fd = fopen (argv[1], "rb");int count, errno=0;bzero (buff, BUFFSIZE);while (!feof (fd)){count = fread (buff, sizeof (char), BUFFSIZE, fd);int n = feof (fd);printf ("%d,%d\n", count, n);printf ("%s\n",strerror (errno));}return 0; }
fread_s读取流的数据。 fread 此版本的具有安全增强功能,如 CRT中的安全功能所述。
size_t fread_s( void *buffer,size_t bufferSize,size_t elementSize,size_t count,FILE *stream );
-
数据的存储位置。
- bufferSize
-
目标缓冲区的大小(以字节为单位)。
- elementSize
-
写入字节的项的大小。
- count
-
要读取的项目最大数。
- stream
-
为 FILE 结构的指针。
有关错误代码的更多信息,请参见 _doserrno、errno、_sys_errlist和_sys_nerr。
此功能锁定其他线程。 如果需要非固定版本,请使用 _fread_nolock。
功能 |
必需的标头 |
---|---|
fread_s |
<stdio.h> |
示例
// crt_fread_s.c // Command line: cl /EHsc /nologo /W4 crt_fread_s.c // // This program opens a file that's named FREAD.OUT and // writes characters to the file. It then tries to open // FREAD.OUT and read in characters by using fread_s. If the attempt succeeds, // the program displays the number of actual items read. #include <stdio.h>#define BUFFERSIZE 30 #define DATASIZE 22 #define ELEMENTCOUNT 2 #define ELEMENTSIZE (DATASIZE/ELEMENTCOUNT) #define FILENAME "FREAD.OUT"int main( void ) {FILE *stream;char list[30];int i, numread, numwritten;for ( i = 0; i < DATASIZE; i++ )list[i] = (char)('z' - i);list[DATASIZE] = '\0'; // terminal null so we can print it// Open file in text mode:if( fopen_s( &stream, FILENAME, "w+t" ) == 0 ){// Write DATASIZE characters to stream printf( "Contents of buffer before write/read:\n\t%s\n\n", list );numwritten = fwrite( list, sizeof( char ), DATASIZE, stream );printf( "Wrote %d items\n\n", numwritten );fclose( stream );} else {printf( "Problem opening the file\n" );return -1;}if( fopen_s( &stream, FILENAME, "r+t" ) == 0 ) {// Attempt to read in characters in 2 blocks of 11numread = fread_s( list, BUFFERSIZE, ELEMENTSIZE, ELEMENTCOUNT, stream );printf( "Number of %d-byte elements read = %d\n\n", ELEMENTSIZE, numread );printf( "Contents of buffer after write/read:\n\t%s\n", list );fclose( stream );} else {printf( "File could not be opened\n" );return -1;} }
fread与fread_s读取文件(二进制文件)相关推荐
- php获取src,PHP读取文件
本文概述 PHP提供了各种功能来从文件读取数据.有多种功能允许你读取所有文件数据, 逐行读取数据以及逐字符读取数据. 下面提供了可用的PHP文件读取功能. fread() fgets() fgetc( ...
- php读出文件,PHP读取文件
PHP提供了从文件读取数据的各种功能(函数). 可使用不同的函数来读取所有文件数据,逐行读取数据和字符读取数据. 下面给出了可用的几种PHP文件读取函数. fread() fgets() fgetc( ...
- linux下 c语言 用write open二进制写文件,Linux下用C语言fopen、fread和fwrite函数对二进制文件的操作-Go语言中文社区...
一.前言 在做一个镜头的初始化操作,需要加载一个648*522像素大小的文件,厂商提供的是一个excel表,如果要加载数据,可用加载txt文本的方式,我选用二进制方式加载文件:大家都知道电脑真正执行的 ...
- php 读取文件大小限制,PHP fread():读取文件(任意长度)
PHP 中的 fread() 函数可以在打开的文件中读取指定长度的数据,也可以安全用于二进制文件.在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fread() 函数的 mode ...
- fwrite和fread函数的用法小结(怎么样以二进制形式保存和读取文件)
该文非博主原创,转载于http://blog.csdn.net/sky_qing/article/details/12783045 fwrite和fread是以记录为单位的I/O函数,fread和fw ...
- python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件
Python3 open() 函数详解 读取文件写入文件追加文件二进制文件 open()函数的主要作用是打开文件并返回相应文件对象,使用文件对象可以对当前文件进行读取.写入.追加等操作,默认情况下&q ...
- c语言读取文件函数,C语言文件操作详细分析:读取文件(fread函数使用)
C语言文件操作详细分析:读取文件(fread函数使用) 这里详细介绍了C语言读取文件的函数fread的使用说明,参照了MSDN的说明,同时加入自己的经验让大家学的更加明白. C语言读取文件函数frea ...
- php 读取文件fread,PHP: 读取文件 fgets 和 fread 的差异
程序在写时, 何时要用 fgets? 何时要用 fread? 主要的差异在哪边? 以下就用简单的范例来说明~ 先创建一个文件: /tmp/readfile.txt, 内容如下: abcdefg 123 ...
- python文本文件不能用二进制文件方式读入_如何使用python函数以二进制形式读取文件?...
虽然读取文件的方式各种各样,但是通过二进制,还是头一次,实现过过程并不难,我们需要将文件先做好封存,以函数的形式,保存下来,然后直接导入进行使用,这样就可以读取文件,因为直接二进制读取是不现实的,只能 ...
最新文章
- gatsby_如何使用Gatsby.js来获取内容
- idea设置自动编译
- Windows开启WMI时一些总结
- Win32 串口编程(二)
- java静态局部变量_java中成员变量,局部变量,静态变量的辨析
- R语言观察日志(part16)--Google‘s R Style Guide
- 我感到惭愧不已的飞鸽传书
- 得推家政派单系统源码 v1.0
- [Ext JS 4] MVC 应用程序框架
- 《Linux编程》上机作业 ·002【Linux常用工具GCC、GDB、Make】
- CRFsuite 学习: CoNLL 2000 shared task
- Centos 查看系统硬件信息
- 拓端tecdat|matlab递归神经网络RNN实现:桨距控制控制风力发电机组研究
- 泛微E9升级KB包方法
- 丁腈橡胶自然老化时间_影响丁腈橡胶老化的因素研究
- Smss.exe进程分析
- ANSYS渡槽槽身动水压力的施加(1)——矩形渡槽
- python 电动车问题
- vue实现俄罗斯方块初级版本
- jira中新增模块详解
热门文章
- Failed to find Build Tools revision 28.0.3
- python如何画出多个独立的图片_python使用matplotlib:subplot绘制多个子图的示例
- composer全局 linux_Linux下全局安装composer方法
- vue封装websocket_Vue中使用websocket
- mysql查询单个员工信息_PHP+MySQL实现模糊查询员工信息功能示例
- 华为鸿蒙mate,华为MatePad Pro发布亮相!华为首款鸿蒙平板全新体验!
- java 判断数字_如何在java中判断一个字符串是否是数字
- 禁止更改计算机名_PiNetwork如何更改名字教程
- IDEA将maven项目复制成一个新的框架/项目
- 北大生物信息学公开课学习(1)