标签:count 文件 第九章 fclose 信息安全 写入 笔记 库函数 size
信息安全系统设计与实现
第九章 I/O库函数
I/O库函数
I/O库函数与系统调用
系统调用函数:open()、read()、write()、lseek()、close()
I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()
I/O库函数的算法
- fread算法
Reads data from a stream.
include<stdio.h>
size_t fread( voidbuffer, size_t size, size_t count,FILEstream );
从一个文件流中读数据,读取count个元素,每个元素size字节.如果调用成功返回count
如果调用成功则实际读取sizecount字节
buffer的大小至少是sizecount 字节.
return:
fread returns the number of full items actually read
实际读取的元素数.如果返回值与count(不是count*size)不相同,则可能文件结尾或发生错误
从ferror和feof获取错误信息或检测是否到达文件结尾 (https://blog.csdn.net/dreamzuora/article/details/53305839?utm_source=blogxgwz7) - fwrite算法
size_t fwrite(const void* buffer,size_t size, size_t count, FILE* stream);
功能:
向文件中写入一个数据块。(写入的数据不限于文本格式,也可以是二进制文件等)
返回值:返回实际写入的数据块数。
参数:
- buffer是一个指针。对fwrite来说是要写入数据的地址。
- size是要写入内容的单字节数。
- count是要 进行写入size字节的数据项的个数。
- stream为目标文件指针
- 返回实际写入的数据项个数count。
说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从filepointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。(https://blog.csdn.net/stf1065716904/article/details/73656025)
- fclose算法
fclose()函数用来关闭当前文件流,其原型为:
int fclose(FILE * stream);
若关文件动作成功则返回0,有错误发生时则返回EOF,并把错误代码存到errno。
fclose()用来关闭fopen()打开的文件,此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。
注意:使用fopen()打开的文件,一定要记得使用fclose()关闭,否则会出现很多意想不到的情况,例如对文件的更改没有被记录到磁盘上,其他进程无法存取该文件等。(http://c.biancheng.net/cpp/html/2505.html)
使用I/O库函数或系统调用
I/O库模式
r读w写a追加
r+读/写不会截断文件
w+读/写会截断文件,若文件不存在会创建文件
a+通过追加读/写文件,若文件不存在会创建文件
- 字符模式I/O
- 行模式I/O
- 格式化I/O
- 内存中的转化模式
- 其他I/O库函数
- 限制混合fread-fwrite
文件流缓冲
变参函数
编程项目:类printf函数
- 项目规范
- 项目基本代码
- myprintf()的算法
- 项目改进
- 项目演示和示例解决方案
习题
学习心得
总的来说这两章知识高屋建瓴地描述了Linux系统的架构和运转过程,让我有了一个粗浅的概略了解,其中还涉及不少数据结构课程的知识,需要多多进行复习和练习才行
Q&A
Q:文件操作都有什么?
A:打开、关闭、读、写、搜索
Q:二进制文件和文本文件如何转换?
A:使用xxd -b命令
Q:数据结构如何读写?
A:使用系统调用或者I/O库函数
标签:count,文件,第九章,fclose,信息安全,写入,笔记,库函数,size 来源: https://www.cnblogs.com/firewolves/p/15340339.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。