学习笔记2
第九章I/O库函数
一、I/O库函数与系统调用
● 系统调用函数:open()、read()、write()、lseek()、close();
● I/O 库函数:fopen()、fread()、fwrite()、fseek()、fclose()。
二、I/O库函数的算法
● fread算法
● fwrite算法
● fclose算法
三、I/O库模式
● 操作
1.字符模式I/O
2.行模式I/O
3.格式化I/O
4.其他I/O库函数
● fseek()、ftell()、rewind():更改文件流中的读/写字节位置。
● feof()、ferr()、fileno():测试文件流状态。
● fdopen():用文件描述符打开文件流。
● freopen():以新名称重新打开现有的流。
● setbuf()、setvbuf():设置缓冲方案。
● popen():创建管道,复刻子进程来调用sh。
四、文件流缓冲
● 无缓冲:从非缓冲流中写入或读取的字符将尽快单独传输到文件或从文件中传输。例如,文件流stderr通常无缓冲。到stderr的所有输出都会立即发出。
● 行缓冲:遇到换行符时,写入行缓冲流的字符以块的形式传输。例如,文件流stdout 通常是行缓冲,逐行输出数据。
● 全缓冲:写入全缓冲流或从中读取的字符以块大小传输到文件或从文件传输。这是文件流的正常缓冲方案。
● JONBUF:无缓冲。
● JOLBUF:行缓冲。
● JOFBUF:全缓冲。
五、变参函数
1.项目规范
● %c: print char
● %s:print string
● %u: print unsigned integer
● %d:print signed integer
● %x:print unsigned integer in HEX
2.myprintf()的算法
(1 )扫描格式字符串fmt。打印任何不是%的字符。对于每个'\n'字符,打印一个额外的'\r'字符。
(2)当遇到'%'时,得到的下一个字符必须是'c'、's'、'u'、'd'或’x'中的 一个。使用va_arg(ap, type)来取相应的参数。然后通过参数类型调用打印函数。
(3)当fmt字符串扫描结束时,算法结束。
实验截图(文件复制)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)