2023-2024-1 20231326《计算机基础与程序设计》第十四周学习总结

发布时间 2023-12-31 21:06:43作者: GisliW

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的学习

image

代码调试中的问题和解决过程

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

其他(感悟、思考等,可选)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第十四周 102/200 1/2 20/20