# 学期2024-2025-1学号20241300 《计算机基础与程序设计》第12周学习总结
作业信息
|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP|
|这个作业要求在哪里|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276|
|这个作业的目标|《C语言程序设计》第11章并完成云班课测试|
|作业正文|https://i.cnblogs.com/posts/edit;postId=18607744|
教材学习内容总结
C语言中的文件操作是编程中的一个重要部分,涉及到文件的打开、读取、写入、关闭等操作。以下是C语言中文件操作的一些关键知识点:
-
文件指针:
- C语言中使用
FILE
类型定义文件指针,用于指向文件。
- C语言中使用
-
文件打开:
- 使用
fopen()
函数打开文件,格式为FILE *fopen(const char *filename, const char *mode);
。 filename
是文件的名称,mode
是打开文件的模式(如"r"读模式,"w"写模式,"a"追加模式等)。
- 使用
-
文件关闭:
- 使用
fclose()
函数关闭文件,格式为int fclose(FILE *stream);
。
- 使用
-
文件读取:
fgetc()
:读取文件的下一个字节。getc()
:宏定义,等同于fgetc()
。fgets()
:读取一行字符串。fread()
:读取多个数据项。fscanf()
:格式化读取。
-
文件写入:
fputc()
:写入一个字节。putc()
:宏定义,等同于fputc()
。fputs()
:写入一个字符串。fwrite()
:写入多个数据项。fprintf()
:格式化写入。
-
文件定位:
rewind()
:将文件指针重新指向文件的开头。ftell()
:获取当前文件位置指针的位置。fseek()
:移动文件位置指针到指定位置。
-
文件检测:
feof()
:检查是否到达文件末尾。ferror()
:检查文件是否发生错误。
-
文件删除和重命名:
remove()
:删除文件。rename()
:重命名文件。
-
文件属性:
fflush()
:强制将缓冲区内容写入文件。setbuf()
:设置文件的缓冲区。setvbuf()
:设置文件的缓冲区,可以指定缓冲区的大小和类型。
-
二进制文件操作:
- C语言中的文件操作默认是文本模式,但可以通过在文件模式字符串前加上
"b"
(如"rb"
,"wb"
)来以二进制模式打开文件。
- C语言中的文件操作默认是文本模式,但可以通过在文件模式字符串前加上
-
缓冲区:
- C语言中的文件操作默认是带缓冲的,这意味着数据可能不会立即写入磁盘,而是存储在内存中,直到缓冲区满或者显式调用
fflush()
。
- C语言中的文件操作默认是带缓冲的,这意味着数据可能不会立即写入磁盘,而是存储在内存中,直到缓冲区满或者显式调用
-
文件权限:
- 在Unix/Linux系统中,文件权限可以通过
chmod()
函数设置。
- 在Unix/Linux系统中,文件权限可以通过
这些是C语言文件操作的一些基础和重要的知识点。在实际编程中,正确地使用这些函数和理解它们的行为对于处理文件数据至关重要。
教材学习中的问题和解决过程
指针就可以用数组替换么?
指针和数组在C语言中都是用来访问和操作内存中的数据,但它们之间有一些关键的区别,不能简单地互相替换。以下是指针和数组的一些基本区别:
-
定义和使用:
- 数组:数组是一种数据结构,用于存储相同类型的多个元素。数组在定义时必须指定其大小,并且这个大小在编译时是固定的。
- 指针:指针是一种变量,它存储了另一个变量的内存地址。指针的大小是固定的,与它指向的数据类型有关,但指向的数据大小可以是动态的。
-
内存分配:
- 数组:数组在定义时分配一块连续的内存空间,其大小是固定的。
- 指针:指针可以指向任何大小的内存块,包括动态分配的内存。
-
灵活性:
- 数组:数组的大小在编译时确定,因此在运行时不能改变。
- 指针:指针可以重新指向不同的内存地址,包括不同大小的内存块,这提供了更大的灵活性。
-
内存管理:
- 数组:数组的内存管理是自动的,不需要程序员显式释放。
- 指针:使用指针时,程序员需要负责内存的分配和释放,这增加了灵活性但也增加了复杂性。
-
传递给函数:
- 数组:当数组作为参数传递给函数时,实际上是传递数组首元素的地址,函数内部使用的是数组的副本。
- 指针:指针作为参数传递给函数时,函数可以直接修改指针指向的数据。
-
数组名和指针的关系:
- 在C语言中,数组名在大多数情况下可以被看作指向数组首元素的指针。例如,
int arr[10];
和int *ptr = arr;
中的arr
和ptr
都指向相同的内存地址。
- 在C语言中,数组名在大多数情况下可以被看作指向数组首元素的指针。例如,
-
数组下标和指针运算:
- 数组:可以通过下标访问数组元素,如
arr[3]
。 - 指针:可以通过指针运算符
+
和-
来访问元素,如*(ptr + 3)
。
- 数组:可以通过下标访问数组元素,如