引言
程序运行后的数据储存咋内存中,会随着程序退出而销毁,但如果我们要保存下程序运行的数据的话,就可以使用文件
正文
二进制文件和文本文件
根据数据类型可以将文件分为二进制文件和文本文件
二进制文件 数据在内存中以二进制储存,不加转换就可以直接输出到外部文件
文本文件 数据以ascll码储存,需要在输出是转换为二进制
数据在储存中,字符以ascll码值储存,数值以ascll码值或者二进制储存
文件的打开和关闭
流 和 标准流
程序的数据需要输入输出到各种外部设备中,而从外部设备输入输出数据的方式都不相同,这就引入了流的概念,把对外部设备输入输出数据的操作统统称为从流里面的输入输出设备,可以人为流是一条流着数据的河
程序在启动时会默认打开3个标准流
stdin 标准输入流,大多数的环境中从键盘输入,scanf函数就是从标准输入流中得到数据
stdout 标准输出流,大多数环境都是输出到屏幕上,比如printf
stderr 标准错误流,大多数输出到屏幕上
这三个流的类型都是FILE* ,称为文件指针
文件指针
在文件打开的时候,编译器会在内存中自动开辟一个叫做FILE结构体,自动填充关于该文件的
信息,所以通过指针FILE* 就可以找到目标文件并对其进行操作
文件操作函数
在使用文件时要先打开文件,使用完后要关闭文件
fopen 打开文件 fclose 关闭文件 头文件都是<stdio.h>
fopen
fopen(打开文件名字,以什么方式打开文件)
打开方式
因为不存在open.txt这个文件,所以pf的值为NULL,assert断言为假程序错误
而用打开类型为‘w’的话,会自己创建一个open.txt的文件
fclose
关闭文件,传入该文件指针
文件读写函数
fgtec
从指定流中读取数据 成功返回该数据,失败返回EOF
fputc
将一个字符写入流中 成功返回成功读写的字符 失败返回EOF
当用"w"打开文件时,文件里的内容会被清空
fgets
从流里面的到num个字符,成功返回该字符串,失败返回NULL
会在读取结束后往末尾添加一个'\0' 所以实际上从pf中读取的实际时5个字符,要注意的时num必须大于一,如果为一就不会在文本中读取字符,而是直接加上'\0'
fupts
将一串字符串写入流中 成功返回非零值 失败返回0
fprintf
将format指向的数据输入到指定流中,成功返回成功输入的个数,失败返回一个负数
fscanf
从流里读取数据 成功返回成功读取的数量,失败返回EOF
从pf指向的文件同以字符串的方式读取数据储存到数组中
文件的随机读写
fseek
origin是起始位置可以是
在指定流中从origin位置起偏移offset个元素,将光标停在那个位置
成功返回0,失败返回非零
ftell
返回现在光标位置先对于起始位置的偏移量
rewind
将光标回到起始位置
END
o( =•ω•= )m