2024-2025 20241323第十四周学习总结
这个作业属于https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP
这个作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01
这个作业的目标了解C语言中的文件操作
作业正文https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01
教材学习内容总结
1.文件操作的基本概念 - 在C语言中,文件被看作是字节序列。文件可以是存储在磁盘等存储设备上的数据集合,例如文本文件(存储字符数据)和二进制文件(存储以二进制格式表示的数据)。通过文件操作,可以从文件中读取数据,也可以将数据写入文件,这使得程序能够持久化数据,在不同的程序运行期间共享和保存信息。
2.文件指针** - 文件指针是C语言中用于操作文件的关键概念。它是一个指向FILE
类型结构的指针,FILE
结构在<stdio.h>
头文件中定义。这个结构包含了文件的各种信息,如文件缓冲区的当前位置、文件的打开模式等。 - 例如,定义一个文件指针fp
:FILE *fp;
。在打开文件后,这个指针将用于访问和操作文件的内容。
3.文件的打开和关闭 - 打开文件 - 函数fopen()
用于打开文件。它的原型为FILE * fopen(const char * filename, const char * mode);
。其中filename
是要打开的文件名(可以包含文件路径),mode
是文件的打开模式。 - 打开模式有多种,例如: - "r"
:以只读方式打开文本文件。文件必须存在,否则打开失败。 - "w"
:以只写方式打开文本文件。如果文件不存在,则创建一个新文件;如果文件存在,则清空文件内容。 - "a"
:以追加方式打开文本文件。如果文件不存在,则创建一个新文件;如果文件存在,则在文件末尾追加内容。 - "rb"
、"wb"
、"ab"
:分别是以只读、只写、追加方式打开二进制文件。 - 示例:fp = fopen("test.txt", "r");
,这行代码尝试以只读方式打开当前目录下名为test.txt
的文本文件,并将文件指针fp
指向该文件。如果打开成功,fp
就可以用于后续的文件读取操作;如果打开失败,fp
的值将为NULL
。 - 关闭文件 - 函数fclose()
用于关闭文件。它的原型为int fclose(FILE * stream);
。关闭文件是一个良好的编程习惯,它可以释放文件相关的资源,如缓冲区等。 - 示例:fclose(fp);
,其中fp
是之前打开文件时得到的文件指针。当程序不再需要对文件进行操作时,应该及时关闭文件。如果关闭成功,fclose()
函数返回0
;如果出现错误,返回EOF
(通常定义为-1
)。
4.文件的读取操作 - 字符读取 - 函数fgetc()
用于从文件中读取一个字符。它的原型为int fgetc(FILE * stream);
。它从文件指针stream
所指向的文件中读取一个字符,并返回该字符的ASCII码值。如果读取到文件末尾或者出现错误,返回EOF
。 - 示例: c FILE *fp; int ch; fp = fopen("test.txt", "r"); if(fp!= NULL) { ch = fgetc(fp); while(ch!= EOF) { putchar(ch); ch = fgetc(fp); } fclose(fp); }
在这个示例中,首先打开文件test.txt
,然后使用fgetc()
函数逐个字符地读取文件内容,通过循环将读取到的字符输出到控制台,直到遇到文件末尾(EOF
),最后关闭文件。 - 字符串读取 - 函数fgets()
用于从文件中读取一个字符串。它的原型为char * fgets(char * str, int n, FILE * stream);
。它从文件指针stream
所指向的文件中读取最多n - 1
个字符,并将其存储到str
所指向的字符数组中。读取的字符串会在末尾自动添加'\0'
作为字符串结束标志。如果在读取n - 1
个字符之前遇到换行符'\n'
或者文件末尾EOF
,则读取操作结束。 - 示例: c FILE *fp; char str[100]; fp = fopen("test.txt", "r"); if(fp!= NULL) { fgets(str, 100, fp); printf("%s", str); fclose(fp); }
这里打开文件test.txt
,使用fgets()
函数读取最多99个字符(因为要预留一个字节给'\0'
)并存储到str
数组中,然后将读取到的字符串输出到控制台,最后关闭文件。 - 格式化读取 - 函数fscanf()
用于从文件中按照格式化的方式读取数据。它的原型为int fscanf(FILE * stream, const char * format,...);
。它的功能类似于scanf()
函数,但是是从文件而不是从标准输入读取数据。 - 示例:假设test.txt
文件中包含一些整数,每行一个整数。 c FILE *fp; int num; fp = fopen("test.txt", "r"); if(fp!= NULL) { while(fscanf(fp, "%d", &num) == 1) { printf("%d ", num); } fclose(fp); }
这个示例中,通过fscanf()
函数从文件中读取整数,每次成功读取一个整数就将其输出到控制台,直到读取操作无法按照指定格式读取到数据(可能是遇到文件末尾或者数据格式错误)。
5.文件的写入操作 - 字符写入 - 函数fputc()
用于向文件中写入一个字符。它的原型为int fputc(int c, FILE * stream);
。其中c
是要写入的字符(可以是字符的ASCII码值),stream
是文件指针。如果写入成功,返回写入的字符;如果出现错误,返回EOF
。 - 示例: c FILE *fp; char ch = 'A'; fp = fopen("test.txt", "w"); if(fp!= NULL) { fputc(ch, fp); fclose(fp); }
这个示例打开一个新文件(如果文件已存在则清空内容)test.txt
,然后使用fputc()
函数向文件中写入字符'A'
,最后关闭文件。 - 字符串写入 - 函数fputs()
用于向文件中写入一个字符串。它的原型为int fputs(const char * str, FILE * stream);
。它将str
所指向的字符串写入到文件指针stream
所指向的文件中,但不包括字符串结束标志'\0'
。如果写入成功,返回一个非负整数;如果出现错误,返回EOF
。 -
示例: c FILE *fp; char str[] = "Hello, World!"; fp = fopen("test.txt", "w"); if(fp!= NULL) { fputs(str, fp); fclose(fp); }
这里打开文件test.txt
(如果存在则清空),使用fputs()
函数将字符串"Hello, World!"
写入文件,最后关闭文件。
- 格式化写入 - 函数
fprintf()
用于向文件中按照格式化的方式写入数据。它的原型为int fprintf(FILE * stream, const char * format,...);
。它的功能类似于printf()
函数,但是是将数据写入文件而不是输出到标准输出。 -
示例:c FILE *fp; int num = 10; fp = fopen("test.txt", "w"); if(fp!= NULL) { fprintf(fp, "The number is %d", num); fclose(fp); }
这个示例打开文件test.txt
(如果存在则清空),使用fprintf()
函数将格式化后的字符串"The number is 10"
写入文件,最后关闭文件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】