文件在程序上可分为数据文件和程序文件,程序文件就是.exe,.obj,.c等为后缀的可执行文件,数据文件为.txt等的存储数据的文件.
通常上来讲,不同后缀的不同文件应有不同的处理方式,但对于一个程序猿来说,这无疑加大了没必要的难度,所以为了方便操作,引入了流的概念,可以看作把东西放入一条河流,然后根据需要从河流中取出所需要的数据.
在c语言中我们通常将流分为两种,一种是标准输入输出流,即stdin(out/error),是通过后端控制的,另一种是文件.
文件处理中读对应输入,写对应输出数据.为了方便记忆,我们可以这么理解:读意味取出数据,将其放到设备内,即为输入;写即放到一个设备中显示出来,就像将东西记到白纸上一样,即为输出.
文件操作顺序如同放东西,打开盖子,放入东西,盖上盖子.文件操作的顺序就是打开文件,操作文件,关闭文件.
打开文件函数为fopen,函数参数为(文件名,打开方式),返回参数为一个地址,如果打开失败,则返回一个空指针.所以打开文件后我们还要用一个if语句判断返回的是不是一个空指针.
关闭文件函数为fclose,函数参数为打开文件的地址.在使用之后别忘了将地址重置为空指针,以防影响后续使用该地址.
操作文件的函数有顺序读写函数:
fgetc(流的方式,即为打开文件后的地址或者stdin等),该函数为读字符的函数,返回值为字符的ASCII码值,相对应的函数为fputc(字符,流的方式),为写字符的函数
fgets(字符串地址,字符个数,流的方式),该函数为读字符串的函数,相对应得是fputs(字符串地址,流得方式)
fscanf与fprintf,与我们所熟知得scanf和printf用法基本一样,只是在函数参数最前面加了个流的方式.
同时普及一下,还有个sscanf与sprintf,分别为将格式化数据转变成字符串与从字符串中读出格式化的数据.
fwrite与fread,以二进制的形式写入数据和读出数据.
同时还有随机读写函数,即可以通过改变光标改变读写顺序的函数:
fseek(流的方式,偏移量,起始位置)
起始位置有
ftell,返回值为当前位置到文件开始位置的偏移量.
rewind,重新回到文件起始位置的函数.
feof与ferror两兄弟,返回值体现的作用是是否读到文件结束停止,如否则返回一个非零的数字与是否未读到文件结束因为发生了问题而终止,如是同样返回一个非0值.
需要了解的是,文件处理过程中,为了提高执行效率,是存在文件缓存区的.手动的fflush或者fclose的时候都会将输入或输出的数据导入进来或出去.
以上为文件处理的基本知识点,如有指点,热烈欢迎.