C语言中的文件操作
在C语言中,文件一般分为文本文件和二进制文件两种。 文本文件是以ASCII码的方式存储的,文件里面的内容为字母、符号、数字啥的;而像可执行文件、图片、文字、声音啥的,就是二进制文件,二进制文件有其特殊的格式和计算机代码,以此才能将图片、文字等内容展现给我们。 而我们对于文件的操作,无非就是四步:打开、写入、读取、关闭。 1. 打开(fopen("文件名","操作")) FILE是一个包含在头文件stdio.h中的结构体类型。一般设置一个指向FILE类型的指针变量来引用FILE类型变量。 FILE *fp=fopen("file.txt","r")中,fp为代表FILE结构类型的变量名,file.txt为文件名,r为要对文件进行的操作。而对文件的操作一般也只有r、w、a、r+、w+、a+六种模式,其中要注意的就是w在写的时候会先将文件原先的内容清空了再写。 2.读取 文件的读取方式有: 1.fgetc(fp) 一个一个的读,可以理解为file-get-char,char代表一个字符嘛,就是从fp指向的文件中一个一个的读取。 fgetc的使用: 2.fgets(str,200,fp) 一行一行的读,可以理解为file-get-string,string表示字符串嘛,也就是从fp指向的文件中一行一行的读取。我们在读取文件的时候不是进去读的,而是先将我们需要读取的内容先拿出来,拷贝到一个空间中,再让我们读取,char str[200],str就是读取时用来存放的位置,200就是这个位置的最大空间,fp就是我要读取的文件。 使用: 其中打印str和打印p,结果是一样的。 3.fread(str,1,20,fp) fread(str,1,20,fp)表示从fp中以一次读取20个字符的方式放到str中读取。需要注意的是fread这个函数最后会得到一个返回值,这个返回值,就是实际读取的大小,例如 int a=fread(str,1,20,fp); a的值就是20。
3.写入-"w"(清空了再写) 在上面我们知道了进行r读取操作时,fgetc表示读取一个字符,fgets表示读取一行字符串, fread就是想读多少都多少,那在进行w写的操作时,也有三个这样的函数,分别是fputc、fputs、fwrite,分别代表了写入一个字符、写入字符串、想写多少写多少这三个功能。 1.fputc('A',fp),表示在文件中写入一个字符A。 2.fputs(str,fp)表示在文件中写入了一个字符串,而字符串的内容,我们可以自己定义。 3.fwrite(str,1,strlen(str),fp) 跟fread一样,我们在写入的时候不是直接写入的,而是得先有一份临时空间又来存放我们写的内容,再将我们得内容写入进去。 这里还有一个特殊的函数fseek,意思是给文件内容定位,fseek有三种表示: 1.fseek(fp,n,SEEK_SET),SET是outset的意思,表示开头。n代表一个数字,表示定位到开头第n位。 2.fseek(fp,n,SEEK_CUT),CUT是current的意思,表示当前。表示定位到距离当前位置的第n位。 3.fseek(fp,-n,SEEK_END),END就是结尾。这里的n一般使用符号,表示定位到文件的倒数第n位。 关于a追加的操作,跟写入是一样的,区别就是w是清空了再写,而a可以理解为插入,一般配合fseek进行操作。
另外,还有rewind()函数和ftell()函数。 rewind(fp),表示将文件指针重置到文件的开头。 而ftell呢,就是得到文件的位置,再返回一个值,而返回的这个值,就是当前位置距离文件开头的字符。因此,我们常用ftell来计算文件的大小。。 4.关闭文件--fclose(fp) 前面我们说到,我们在读和写的时候,都是先申请了空间,进行临时拷贝,再进行的读写,fclose()这个函数的功能,就是将那些缓冲区的数据,输出到内核缓冲区,也就是我文件实际存储的位置,并且释放这些缓冲空间。 如果不关闭,会造成数据的丢失。
推荐阅读
-
实现纯前端下载PDF链接文件的解决方案,不进行预览操作
-
修改itunes备份路径的方法(奇奇怪怪的文件堆积C盘,别让文件成为最后的稻草哦)
-
什么是挂载,Linux挂载详解-纠正一个误区,并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。
-
如何在AIX中进行ISO文件的挂载操作
-
操作系统Linux下如何挂载img格式的镜像文件?
-
C语言中的数字猜测游戏
-
C语言中的数字猜猜乐
-
在C语言中,%10.4f的作用是什么?
-
重新设计标题: 探索C语言中的数字猜猜乐
-
深入解析猜数字游戏:如何玩转C语言中的该游戏