2023-2024-1 20231326《计算机基础与程序设计》第十四周学习总结
作业信息
这个作业属于哪个课程 | 2023-2024-1-计算机基础与程序设计 |
---|---|
这个作业要求在哪里 | 2022-2023-1计算机基础与程序设计第十四周作业 |
这个作业的目标 | 《C语言程序设计》第十三章 |
作业正文 | https://www.cnblogs.com/gisliw/p/17937958 |
教材学习内容总结
《C语言程序设计》
二进制文件和文本文件
- 二进制文件是一种字节序列,没有字符变换,其中的数据以二进制存储
- 文本文件是一种字符序列,其中的数据以ASCII码存储
存储数据123
时占用空间:
二进制文件: 00000000 01111011
123(bin)
文本文件: 00110001 00110010 00110011
"1" "2" "3"
文件的打开与关闭
打开文件
fopen()
函数,返回值为文件指针,若返回为NULL则表示文件不存在。
函数原型:
FILE *fopen(const char *filename, const char *mode);
在stdio.h
中定义了结构体 FILE。
// 例子:只读打开"D:\\text.txt"(首先确保此文件存在)
FILE *fp = fopen("D:\\text.txt", "r");
参数 | 打开方式 |
---|---|
r | 按只读打开 |
w | 只写打开文件,指针指向文件头部 |
a | 与w不同,只写打开文件后指针指向文件末尾 |
+ | 与r, a, w配套使用,按读写打开。即既可以读取又可以写入 |
b | 与r, w, a配套使用,按二进制打开文件 |
关闭文件
fclose()
函数,当关闭成功时返回0
,否则返回非0
值。
函数原型:
int fclose(FILE *fp);
文件读写
按字符读写文件
- 读出字符
fgetc()
函数fgetc()
用于从一个以只读或读写方式打开的文件上读字符。
函数原型:
int fgetc(FILE *fp);
// fp是函数 fopen() 返回的文件指针
若读取成功,则返回该字符;若读到文件末尾,则返回EOF
(一个符号变量,在stdio.h
中定义为-1)
- 写入字符
fputc()
函数fputc()
用于将一个字符写入一个文件
函数原型:
int fputc(int c, FILE *fp);
// fp是函数 fopen() 返回的文件指针,c 是要输入的字符
若成功写入,返回字符c
;若写入错误,则返回EOF
。
按字符串读写
- 按字符串读
fgets()
char *fgets(char *s,int n,FILE *fp);
// 从fp所指的文件中读取字符串并在字符串末尾添加'\0',然后存入s,最多读n-1个字符
// 当读到回车换行符、文件末尾或读满n-1个字符时函数返回该字符串的首地址
若出现写入错误,则返回 EOF,否则返回一个非负数
- 按字符串写
fputs()
int fputs(const char *s, FILE *fp);
按格式读写
- 按格式读
fscanf()
int fscanf(FILE *fp, const char *format, ...);
// 比 scanf() 多了文件指针
从fp中读:
fscanf(fp, "%d%f", &i, &t);
- 按格式写
fprintf()
int fprintf(FILE *fp,const char *format,...);
// 比 printf() 多了文件指针
写入fp:
fprintf(fp, "%d,%6.2f", i, t);
按数据块读写
- 数据块读
fread()
从fp所指的文件中读取数据块并存储到buffer指向的内存中
unsigned int fread(void *buffer, unsigned int size, unsigned int count, FILE *fp);
// buffer是数据块起始地址
返回实际读到的数据块个数
- 数据块写
fwrite()
将buffer指向的内存中的数据块写入fp所指的文件
unsigned int fwrite(const void *buffer, unsigned int size, unsigner int count, FILE *fp);
使用举例:
若文件以二进制形式打开:
fread(f,4,2,fp);
此函数从fp所指向的文件中读入2个4个字节的数据,存储到指针f所指向的空间中。
文件随机访问
fseek()
将fp的文件位置指针从fromwhere开始移动offset个字节,指示下一个要读取数据的位置
int fseek(FILE *fp, long offset, int fromwhere);
// ANSI C 要求偏移量offset为长整型数据,常量数据后要加L
// fromwhere有三个取值:0(SEEK_SET)表示文件开始,1(SEEK_CUR)表示当前位置,2(SEEK_END)表示文件末尾
fseek函数应用举例
fseek(fp, 100L, 0);
将位置指针移到离文件头100个字节处。
fseek(fp, 50L, 1);
将位置指针移到离当前位置50个字节处。
fseek(fp, -10L, 2);
将位置指针从文件末尾处向后退10个字节。
rewind()
void rewind(FILE *fp);
将文件位置指针指向文件首字节,即重置到文件首部
ftell()
long ftell(FILE *fp);
按相对文件首部的偏移量来表示当前文件指针位置
基于AI的学习
代码调试中的问题和解决过程
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第十四周 | 102/200 | 1/2 | 20/20 |