文件处理函数
思维导图

文件处理函数
fopen
r只读模式, 不会新建不存在文件w只写模式, 会新建不存在文件, 文件存在会清空内容, 写入新的内容.a追加模式, 只写, 会新建不存在文件, 文件存在不会清空内容, 会在文件末尾追加新内容.更新模式比如a+,r+,w+,rb,ra,rw,abx+等等, 可任意组合r w a任意一个.
+读写模式.b二进制模式, 以二进制方式打开和处理文件.x独占模式(新标准支持), 打开后其他程序不能使用.
更新模式不会改变其特性, 只会改变模式, 比如r+仍然不能新建不存在文件.
返回值为FILE*, 它是我们用来操作的文件缓冲区, 注意, 是缓冲区而不是直接操作的文件.
fclose关闭
文件缓冲区
getc
char getc(FILE* stream)从文件缓冲区中读取一个字符
返回读取到的字符, 或者EOF
fseek ftellfseek(FILE* stream, long offset, int whence) 移动游标
offset 移动的游标数
whence 游标移动的位置, 包括SEEK_SET(文件头开始), SEEK_CUR(当前文件游标开始), SEEK_END(文件尾开始)
需要注意的是, SEEK_END的时候, offset需要为负数, 不然会出现不可预知的问题.ftell(FILE* stream) 获取当前游标数
文本模式下需要注意, 在使用ftell的时候, Windows平台一个换行占用2个游标('\r', '\n', Linux平台一个换行占用1个游标('\n')
但是, 我们的getc在读取的时候, 会忽略'\r'.putc
putc(char ch)输出一个字符到文件中
作业
在文本模式下, 以f系函数(fgets, fputs...)完成如下作业, 不能使用标准输入输出流函数.
1. 让用户输入文件名(.txt结尾), 按文件的目录建立当前文件名的文档, 随后让用户输入信息, 每次只保存本次信息.
2. 让用户输入文件名(.txt结尾), 如果文件不存在就建立该文件, 如果文件存在则覆盖写入之后用户输入的信息.
3. 让用户输入文件名(.txt结尾), 如果文件存在则创建一个同名的.bak文件,
在bak文件中追加保存用户输入的信息, 输入#结束输入,
输入结束后打印bak的信息, 然后要求用户确认.
用户确认后, 将bak中的信息覆盖至源文件. 如有错误,请提出指正!谢谢.
本文由 花心胡萝卜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: 2016-10-10 at 04:52 pm