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

发布时间 2023-12-28 20:08:12作者: Raymongillichmks

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

作业 速达
作业课程 班级链接
作业要求 计算机基础与程序设计第十四周学习总结
作业内容 《C语言程序设计》第13章并完成云班课测试
作业正文 我的作业


教材总结

总结

文件操作是C语言中常用的一种数据输入与输出方式,它可以实现数据的持久化存储和读取。文件操作涉及到以下几个方面:

  • 文件的概念和类型:文件是存放在磁盘上的一组相关数据,它可以分为文本文件和二进制文件两种。文本文件是以字符编码的方式保存的,可以用文本编辑器打开和修改。二进制文件是将内存中的数据原封不动地保存在文件中,适用于非字符为主的数据,如图像、音频、视频等。
  • 文件的打开和关闭:要对文件进行操作,首先要用fopen函数打开文件,它的原型是FILE * fopen (const char * filename,const char * mode);,其中filename是文件名,mode是文件打开模式,如"r"表示只读,"w"表示只写,"a"表示追加,"b"表示二进制,"+"表示读写等。fopen函数返回一个文件指针,它是一个指向FILE结构体的指针,用来保存文件的相关信息。如果打开失败,fopen函数返回NULL。打开文件后,要用fclose函数关闭文件,它的原型是int fclose (FILE * stream );,其中stream是文件指针,fclose函数会将缓冲区中的数据写入磁盘,并释放文件信息区。如果关闭成功,fclose函数返回0,否则返回非零值。
  • 文件的读写:C语言提供了多种函数来对文件进行读写操作,如fgetc、fputc、fgets、fputs、fread、fwrite、fprintf、fscanf等。这些函数的原型和用法可以参考这篇文章。文件的读写可以分为顺序存取和随机存取两种方式。顺序存取是按照文件中的数据顺序依次读写,适用于文本文件。随机存取是根据文件指针的位置任意读写,适用于二进制文件。
  • 文件的定位:有时候我们需要在文件中移动文件指针的位置,以便进行随机存取。C语言提供了以下几个函数来实现文件的定位:
    • int fseek (FILE * stream, long int offset, int origin);:该函数可以将文件指针移动到指定的位置,其中stream是文件指针,offset是相对于origin的偏移量,origin是参考位置,可以是SEEK_SET(文件开头),SEEK_CUR(当前位置),SEEK_END(文件结尾)。
    • long int ftell (FILE * stream);:该函数可以返回文件指针相对于文件开头的位置,其中stream是文件指针。
    • void rewind (FILE * stream);:该函数可以将文件指针重置到文件开头,其中stream是文件指针。

学习过程中的问题

不论是学习C语言或者c++文件操作的过程中,可能会遇到以下一些问题:

  • 文件打开失败:有时候,由于文件不存在或者权限不足,使用fopen函数或者fstream打开文件时会返回NULL,导致后续的文件操作无法进行。解决方案:在使用文件之前,先检查文件是否存在,同时确保程序有足够的权限来读写文件。
  • 文件指针错误:有时候,由于文件指针的位置和偏移量设置不正确,导致文件的读写出现错误或者丢失数据。解决方案:使用fseek、ftell和rewind等函数来正确地定位和移动文件指针,注意文件指针的基准位置和偏移量的正负。
  • 文件格式混淆:有时候,由于文件的格式和文件操作的模式不匹配,导致文件的读写出现乱码或者损坏。解决方案:区分文本文件和二进制文件,使用相应的文件操作模式和函数,如“r”和“rb”、“w”和“wb”等。
  • 文件缓冲区问题:有时候,由于文件缓冲区没有及时刷新,导致文件的读写出现延迟或者不完整。解决方案:使用fflush函数来强制刷新文件缓冲区,或者使用fclose函数来关闭文件,同时刷新缓冲区。
  • 文件结束符问题:有时候,由于文件结束符的判断不正确,导致文件的读取出现死循环或者提前终止。解决方案:使用feof函数来判断文件是否读取到末尾,注意不要在读取之前使用feof函数,否则会导致漏读最后一个字符。

《C语言程序设计》第十三章

我想分别谈谈C语言和C++在文件操作这一方面的不同,

  • 文件的概念和分类:文件是磁盘上的数据集合,可以分为程序文件和数据文件。程序文件是存储源代码、目标代码或可执行代码的文件,如.c、.obj或.exe文件。数据文件是存储程序运行时读写的数据的文件,如.txt、.bin或.dat文件。
  • 文件的打开和关闭:文件在读写之前必须先打开,使用结束后必须关闭。打开文件需要指定文件名和文件模式,如只读、只写、追加、二进制等。打开文件会返回一个文件指针,用来标识和访问文件。关闭文件会释放文件指针和文件资源。
  • 文件的顺序读写:文件的读写可以按照字符、字符串、格式化或二进制的方式进行。常用的文件读写函数有fgetc、fputc、fgets、fputs、fscanf、fprintf、fread和fwrite等。文件读写时需要注意文件指针的位置和文件结束符的判断。
  • 文件的随机访问:文件的随机访问可以通过移动文件指针的位置来实现。常用的文件指针移动函数有fseek、ftell和rewind等。文件指针移动时需要指定基准位置和偏移量,如文件开头、文件结尾或当前位置等。

而在C++中分别采用了不同的代码,C++关于文件操作也是可以分为以下几个方面:

  • 文件的概念和分类:文件是磁盘上的数据集合,可以分为文本文件和二进制文件。文本文件是以字符为单位存储的文件,如.txt、.cpp或.html文件。二进制文件是以字节为单位存储的文件,如.jpg、.exe或.dat文件。
  • 文件的打开和关闭:文件在读写之前必须先打开,使用结束后必须关闭。打开文件需要指定文件名和文件模式,如只读、只写、追加、二进制等。打开文件会返回一个文件流对象,用来标识和访问文件。关闭文件会释放文件流对象和文件资源。
  • 文件的顺序读写:文件的读写可以按照字符、字符串、格式化或二进制的方式进行。常用的文件读写函数有<<、>>、getline、write和read等。文件读写时需要注意文件指针的位置和文件结束符的判断。
  • 文件的随机访问:文件的随机访问可以通过移动文件指针的位置来实现。常用的文件指针移动函数有seekg、seekp和tellg、tellp等。文件指针移动时需要指定基准位置和偏移量,如文件开头、文件结尾或当前位置等。
  • 文件的错误处理:文件的错误处理可以通过检查文件流对象的状态来进行。常用的文件状态函数有is_open、good、bad、fail和eof等。文件状态函数可以判断文件是否打开成功、是否有错误发生、是否到达文件末尾等。

基于AI的学习



代码行数(新增/累积) 学习时间(新增/累积)
目标 2000行 100小时
第一周 50/50 2/2
第二周 50/50 2/2
第三周 50/50 2/2
第四周 50/50 2/2
第五周 300/300 2/2
第六周 300/300 2/2
第七周 200/200 1/1
第八周 200/200 1/1
第九周 200/200 1/1
第十周 150/150 1/1
第十一周 250/250 1.5/1.5
第十二周 200/200 1.2/1.2
第十三周 200/200 1.2/1.2
第十四周 200/200 1.2/1.2