作业信息
这个作业属于哪个课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2023-2024-1计算机基础与程序设计第十四周作业 |
这个作业的目标 | 参考本周学习资源、自学教材《C语言程序设计》第13章并完成云班课测试 |
作业正文 |
教材学习内容总结
《C语言程序设计》——第13章 文件操作:
- 二进制文件和文本文件
-
二进制文件:
以二进制形式存储数据,即使用0和1的组合。 包含任意数据,包括图像、音频、视频、可执行代码等。 通常不可读,因为数据以机器可执行的形式存储。由计算机硬件直接处理,不需要解释器或编译器。可执行程序、图像文件(JPEG、PNG)、音频文件(MP3)、视频文件(MP4)等都属于二进制文件。 -
文本文件:
以字符的形式存储数据,使用字符编码(例如ASCII、UTF-8)。包含文本信息,如文档、配置文件、源代码等。通常是可读的,但需要解释器或编译器来处理,因为数据需要被解释为文本。文本文件(TXT)、源代码文件(C、Java)、配置文件(INI、XML)、网页文件(HTML)等都属于文本文件。 -
比较:
二进制文件适用于存储任意类型的数据,但通常不易读取。文本文件适用于存储文本信息,易于读取和编辑。在二进制文件中,数据的格式通常由程序来解释。文本文件通常可以由文本编辑器直接编辑。当存储文本信息时,选择文本文件更为合适。当存储图像或音频等二进制数据时,选择二进制文件更为恰当。 -
文本文件中的每一个数字都单独占用一个字节的存储空间。而二进制文件则是把整个数字作为一个二进制数来存储的,并非数值的每一位数字都占用单独的存储空间。
- 文件的打开和关闭
- 代码示例:
include <stdio.h>
int main() {
// 文件指针
FILE *file;
// 打开文件(写入模式,如果不存在则创建,如果存在则截断为空)
file = fopen("example.txt", "w");
//检查文件是否成功打开
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
// 关闭文件
fclose(file);
return 0;
}
-
解释:
"r": 只读方式打开文件。
"w": 只写方式打开文件,如果文件存在则截断为零长度,如果文件不存在则创建。
"a": 追加写方式打开文件,如果文件不存在则创建。
"r+": 读写方式打开文件。
"w+": 读写方式打开文件,如果文件存在则截断为零长度,如果文件不存在则创建。
"a+": 读写方式打开文件,如果文件不存在则创建,写入的数据追加到文件末尾。 -
按字符读写文件
- 函数fgetc()用于从一个以只读或读写方式打开的文件上读字符。
- 函数fputc()用于将一个字符写到一个文件上。
- 函数feof()用于检查是否到达文件末尾,当文件位置指针指向文件结束符时,返回非0值,否则返回0值。
代码示例:
include <stdio.h>
int main() {
FILE *file;
char ch;
// 打开文件(读取模式)
file = fopen("example.txt", "r");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
// 读取文件内容
while (!feof(file)) {
ch = fgetc(file);
// 检查是否到达文件末尾
if (!feof(file)) {
printf("%c", ch);
}
}
// 关闭文件
fclose(file);
return 0;
}
需要注意的是,虽然 feof 可以用于检查文件是否到达末尾,但在很多情况下,更常见的是使用其他文件读取函数(如 fread、fgets、fscanf)的返回值来判断是否已经到达文件末尾。 feof 的主要用途之一是在使用 feof 和其他文件读取函数的组合时,确保正确地处理文件读取的边界条件。
- 按格式读写文件
- fprintf(file, "%s %d %f\n", "Hello", 123, 3.14); 将字符串、整数和浮点数按照指定的格式写入文件。
- fscanf(file, "%s %d %f", str, &num, &decimal); 从文件中按照指定的格式读取字符串、整数和浮点数。
- fwrite()
fwrite 用于将数据块从内存写入文件。它返回实际写入的数据块数量。
代码示例:
//向文件写入整数数组
int numbers[] = {1, 2, 3, 4, 5};
FILE *file = fopen("data.bin", "wb");
fwrite(numbers, sizeof(int), 5, file);
fclose(file);
4. fread()
fread 用于从文件读取数据块到内存。它返回实际读取的数据块数量。
代码示例:
//向文件写入整数和字符串
FILE *file = fopen("output.txt", "w");
fprintf(file, "Integer: %d, String: %s\n", 42, "Hello");
fclose(file);
基于AI的学习
代码调试中的问题和解决过程
无
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
------- | -------- | ----- | ||
第二周 | 200/400 | 2/4 | ||
第三周 | 200/600 | 3/7 | ||
第四周 | 100/700 | 2/9 | ||
第五周 | 200/900 | 1/ 10 | ||
第六周 | 300/1200 | 1/11 | ||
第七周 | 400/1600 | 1/12 | ||
第八周 | 500/2100 | 1/13 | ||
第九周 | 500/2600 | 3/16 | ||
第十周 | 400/3000 | 1/17 | ||
第十一周 | 400/3400 | 1/18 | ||
第十二周 | 400/3800 | 2/20 | ||
第十三周 | 400/4200 | 6/26 | ||
第十四周 | 400/4600 | 1/27 |