归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言📝
我辈皆凡人,用一生铺就的,走到终点也不过是平凡之路。
但只要不忘初心,砥砺前行,再渺小的无名之辈,亦有华彩。
一起加油!
目录
💦前言:
如果你在计算机上调试过 C 语言程序,一定有保存程序的概念。保存程序就是将编辑好的 C语言程序以文件的形式存储在计算机的外存储器上,比如存储在磁盘上,形成源程序文件。对源程序进行编译、链接后会产生目标文件(.obj)和可执行文件(.exe)。
在前面的程序中,程序处理的数据往往需要从键盘输入,程序处理的结果总是输出到显示器上。在程序调试过程中,每运行一次程序就要输入一次数据,如果输入数据较多,则是一件相当麻烦的事情,也容易出错。为了使数据可重复、永久使用,可将程序处理的数据存放在文件中,需要时将文件中的数据读入内存,供程序处理。同样,程序的处理结果也可以保存在文件中,供其他程序使用或显示输出。事实上,计算机处理的诸如数字、文字、图形、声音、图像、视频等大量的数据都是存储在文件中的。
💦文件的基本的概念:
文件是信息的集合。在 C 语言中,包括磁盘文件和设备文件。磁盘文件是存储在磁盘上的信息的集合,而所有能进行输入/输出的终端设备都被视为设备文件。如键盘是标准输入文件,显示器是标准输出文件。如果文件中存储的是程序,这样的文件称为程序文件;如果文件中存储的是供程序处理的数据,则称为数据文件。C 语言把文件视为一个字节(字符)序列,即文件是由字节(字符)组成的序列,允许以字节(字符)为单位进行读/写。就好像在程序和文件或设备之间有字节流在流动,所以将这种组织形式和存取方式的文件形象地称为流式文件。
根据数据的组织形式,可以把文件分为两类: 文本文件和二进制文件。文本文件中的每个字节存放一个 ASCII码,代表一个字符。二进制文件中的数据以数据在内存中的形式存放。
文本文件中的一个字节对应一个字符,便于对字符逐个处理,也便于输出字符;但一般要占用较多的磁盘空间,而且在读入内存或写入文件时要进行格式转换,需要转换时间。二进制文件中的数据格式与数据在内存的存储形式相同,占用较少的磁盘空间,读入内存或写入文件时也不进行格式转换,数据的输入/输出速度较快。
对流式文件的处理方式有两种,缓冲文件系统和非缓冲文件系统。所谓缓冲文件系统是指系统自动地为每个正在使用的文件开辟一个缓冲区(内存的某个特定区域); 如果从内存向磁盘写数据,数据先写入缓冲区中,当缓冲区写满之后或文件关闭时,才把缓冲区的内容一次全部写入磁盘文件;如果从磁盘读数据到内存,系统先一次性从磁盘文件读入一批数据送入内存缓冲区,然后再从缓冲区取数据供程序处理。非缓冲文件系统不会为使用的文件自动建立缓冲区,程序需为每个文件设定缓冲区。
在传统的 UNIX 系统中,用缓冲文件系统处理文本文件,而用非缓冲文件系统处理二进制文件。由于这两种文件系统中有许多功能是重叠的,因此 ANSI C 标准建议只保留缓冲文件系统,并扩展了它的功能。这样在 ANSI C 中,缓冲文件既用于处理文本文件,又用于处理二进制文件。
💦文件类型和常用函数:
C 语言中没有输入/输出语句,对文件的所有操作都是用库函数实现的。下面是与文件操作有关的类型定义和常用函数的原型,这些内容可参考头文件 stdio.h。
文件类型定义
文件操作函数原型
💦文件的打开与关闭 :
对文件操作的步骤一般有三步: 1.打开文件;2.对文件进行读/写:3关闭文件所谓打开文件,就是建立程序和文件之间的通信通道,并为文件操作建立缓冲区。语言程序通过文件类型指针与文件建立联系,程序中的一个文件类型指针就代表一个文件文件打开后,就可以使用库函数对文件进行读/写操作了。程序结束或不再继续使用文件时要关闭文件。关闭文件的目的是要释放相关的资源,如缓冲区等。
💦简单文件操作的例子 :
题目1显示:在 C盘根目录下建立一个名为 abc.txt 的文本文件,从键盘输入一些字符写入该文件中,直到输入一个^Z(Ctrl+Z)为止(^Z 是键盘输入的文件结束标志)。
#include<stdio.h>
#include<stdlib.h>
int main(){
char ch;
FILE *fp;//定义文件类型指针
if((fp=fopen("abc.txt","w"))==NULL){//以写方式打开文本文件
printf("Can not open file\n");
exit(1);
}
ch=getchar();
while(ch!=EOF){//不是ctrl+c就循环
fputc(ch,fp);//写字符到文件
ch=getchar();//从键盘读入下一个字符
}
fclose(fp);//关闭文件
}
程序中的语句“ch=getchar ();”还可写成“ch-fgetc(stdin);”,其作用是从标准输入设备(键盘)读入一个字符。
运行
题目2: 显示题目1中建立文件abc.txt中的内容
#include<stdio.h>
#include<stdlib.h>
int main(){
char ch;
FILE *fp;//定义文件类型指针
if((fp=fopen("abc.txt","r"))==NULL){//以读方式打开文本文件
printf("Can not open file\n");
exit(1);
}
ch=fgetc(fp);//从文件中读入一个字符
while(ch!=EOF){//不是文件尾则循环
putchar(ch);//显示字符
ch=fgetc(fp);//从文件读入下一个字符
}
fclose(fp);//关闭文件
}
运行
最后,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。若这篇文章中有哪些不正确的内容,欢迎大家在评论区和我交流讨论!