【C语言】探索文件读写函数的全貌

请添加图片描述

请添加图片描述
Alt

🌈个人主页:是店小二呀
🌈C语言笔记专栏:C语言笔记
🌈C++笔记专栏: C++笔记

🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅
请添加图片描述
🔥引言

本章将介绍文件读取函数的相关知识和展示使用场景,通过这些函数就可以打开文件与我们之间的桥梁。

文章目录

  • 一、文件的打开和关闭
  • 二、文件的打开模式
  • 三、文件路径
  • 四、文件打开和关闭函数
    • 4.1 fopen()
    • 4.2 fclose()
  • 五、顺序读写函数
    • 5.1 fputc()
    • 5.2 fgetc()
    • 5.3 实现文件拷贝
    • 5.4 fputs()
    • 5..5 fgets()
    • 5.6 fscanf和fprintf函数
    • 5.7 fprintf()
    • 5.8 fscanf()
    • 5.9 sprintf和sscanf函数
      • 5.9.1 sprintf()
      • 5.9.2 sscanf
      • 小总结
  • 六、二进制的方式读写函数
    • 6.1 fwrite()
    • 6.2 fread()
  • 七、文件的随机读写
    • 7.1 fseek()
    • 7.2 ftell()
    • 7.3 rewind()
  • 八、文件读取结束的判断
    • 8.1 ferror()
    • 8.2 feof()
    • 小总结
    • 检查文件读取结束场景
  • 九、文件缓冲区


一、文件的打开和关闭

如果需要对文件进行一些读写操作,那么首先就需要先打开文件,在使用完以后关闭文件,所以最基本是打开文件和关闭文件

ANSIC规定使用fopen函数来打开文件,fclose来关闭文件

打开文件FILE *fopen(const char *filename,const char *mode);
关闭文件FILE *fclose(FILE *stream);

二、文件的打开模式

mode表示文件的打开模式,下面都是文件的打开模式

⽂件使⽤⽅式含义如果指定⽂件不存在
“r”(只读)为了输⼊数据,打开⼀个已经存在的⽂本⽂件出错
“w”(只写)为了输出数据,打开⼀个⽂本⽂件建⽴⼀个新的⽂件
“a”(追加)向⽂本⽂件尾添加数据建⽴⼀个新的⽂件
“rb”(只读)为了输⼊数据,打开⼀个⼆进制⽂件出错
“wb”(只写)为了输出数据,打开⼀个⼆进制⽂件建⽴⼀个新的⽂件
“ab”(追加)向⼀个⼆进制⽂件尾添加数据建⽴⼀个新的⽂件
“r+”(读写)为了读和写,打开⼀个⽂本⽂件出错
“w+”(读写)为了读和写,建议⼀个新的⽂件建⽴⼀个新的⽂件
“a+”(读写)打开⼀个⽂件,在⽂件尾进⾏读写建⽴⼀个新的⽂件
“rb+”(读写)为了读和写打开⼀个⼆进制⽂件出错
“wb+”(读写)为了读和写,新建⼀个新的⼆进制⽂件建⽴⼀个新的⽂件
“ab+”(读写)打开⼀个⼆进制⽂件,在⽂件尾进⾏读和写建⽴⼀个新的⽂件

三、文件路径

在打开和关闭文件一般直接输入指定的文件名,当然也可以根据文件的路径对该文件进行操作。

路径分为:

  • 绝对路径
  • 相对路径
  • . 表示当前路径
  • … 上一级路径
对此当前文件test1.txt在D:\code\2024\2024\Document(绝对路径)
FILE* pf = fopen("C:\\Users\\zpeng\\Desktop\\test.txt", "w");   当test1.txt在其他文件夹中,可以通过上面表示的关系寻找
FILE* pf = fopen(".\\..\\..\\hehe\\test.txt", "w");

四、文件打开和关闭函数

4.1 fopen()

FILE *fopen(const char * filename, const char * mode)

说明】:

  • 功能:打开其名称在参数 filename 中指定的文件,并将其与流相关联,该流可在将来的操作中通过返回的 FILE指针进行标识。
  • 返回值:如果文件成功打开,该函数将返回指FILE对象的指针,该对象可用于在将来的操作中标识流,如果文件没有成功打开,则将返回NULL。
  • 允许对流执行的操作以及如何执行这些操作由 mode 参数定义

4.2 fclose()

int fclose(FLIE *stream)

说明】:

  • 功能:关闭与流关联的文件并取消关联
  • 与流关联的所有内部缓冲区都将与其解除关联并刷新:写入任何未写入的输出缓冲区的内容,并丢弃任何未写入输入缓冲区的内容。(更新缓冲区)
  • 返回值:流关闭成功,则返回0。关闭失败,返回EOF

五、顺序读写函数

这里所有的输入流、输出流分别指stdin(标准输入流)、stdout(标准输出流)和文件流

5.1 fputc()

请添加图片描述

函数部分说明】:

功能上:

将字符写入流并推进位置指示器,然后自动前进1。适用于所有输入流(字符输入到流中)

参数部分上:

character

  • 将要写入的字符的整型提升
  • 写入时,该值在内部转换为无符号字符

stream:

  • 指向标识输出流的FILE对象指针

返回值:

  • 成功,将返回写入的字符。发生写入错误,则返回EOF并设置错误指示符(ferror)
int main()
{FILE* pf = fopen("test1.txt", "w");if (pf == NULL){perror("fopen fail!!!");return;}fputc('d', pf);fputc('e', pf);fclose(pf);pf = NULL;return 0;
}

在这里插入图片描述

使用说明】:

  • 首次调用fputc函数将字符‘d’写入到文件当中,位置指示器向前+1就会指向‘d’的下一个位置,第二次fputc函数时,字符‘e’在这个位置输入进去。
  • 注意这里对流执行写操作"w"模式
  • 对于stream可以是文件流也可以是标准流

练习】:使用fputc将A ~Z个字符输入到指定文件和显示器中

int main()
{FILE* pf = fopen("test1.txt", "w");if (pf == NULL){perror("fopen fail!!!");return;}for (char i = 'A'; i <= 'Z'; i++){fputc(i, pf);//输入到文件中fputc(i, stdout);//输入到显示器中}fclose(pf);pf = NULL;return 0;
}

5.2 fgetc()

在这里插入图片描述

函数部分说明】:

  • 功能:字符输入函数,从流中获得字符,返回指定流的内部文件位置指示符当前指向的字符内部文件位置指示器将前进到下一个字符
  • 返回值:成功后,将返回字符读取(进行整型提升)。如果失败则,返回EOF
int main()
{FILE* pf = fopen("test1.txt", "r");if (pf == NULL){perror("fopen fail!!!");return;}	char ch;//ch用于接收fgetc从流中获得的字符ch = fgetc(pf);printf("%c", ch);ch = fgetc(pf);printf("%c", ch);fclose(pf);pf = NULL;return 0;
}

使用说明】:

  • 这里对流的操作采用mode是"r"模式
  • 此时在指定文件提前写入数据,使用fgetc读取该文中的数据,第一次使用时读取‘h’字符,指示器++1,指向‘e’字符位置,在第二次使用读取该字符。
  • 当然也可以直接从键盘读取数据(使用标准输入流stdin)–>改为ch = fgetc(stdin);

5.3 实现文件拷贝

通过以上两个函数,我们可以用来实现文件拷贝的场景

int main()
{FILE* pfread = fopen("data1.txt", "r");if (pfread == NULL){perror("fopen fail!!!");return;}	FILE* pfwrite = fopen("data2.txt", "w");if (pfwrite == NULL){fclose(pfread);//读文件操作没有必要pfread=NULL;perror("fopen fail!!!");return;}char ch;while ((ch = fgetc(pfread)) != EOF){fputc(ch, pfwrite);}fclose(pfread);fclose(pfwrite);return 0;
}

在这里插入图片描述

使用说明】:

  1. 这里先提前准备好两个文件,并且在data1.txt中提前输入数据
  2. 这里需要对两个不同文件使用不同mode打开,对data1.txt使用读的形式,而data2.txt是写的形式打开
  3. 在while循环中一个从data1.txt读取字符,同时一个向data2.txt输入字符,直到读取完成或者发生错误

5.4 fputs()

在这里插入图片描述

函数部分说明】:

  • 功能:文本行输入函数,将str指向的字符串写入流中,从指定的地址开始复制,直到结束标志\0(\0’字符不会复制到流中
  • 返回值:成功,返回一个非负值,失败,则返回EOF
int main()
{FILE * pf = fopen("test1.txt", "w");if (pf == NULL){perror("fopen fail!!!");return;}	//fputs("hellow world", pf); -- 将字符串输入到文件流中fputs("hellow world", stdout); -- 将字符串输入到输出流中(打印到屏幕上)fclose(pf);pf=NULL;return 0;
}

5…5 fgets()

在这里插入图片描述

函数部分说明】:

功能上:

  • 文本行输入函数,从流中获得字符串,直到读取到num-1个字符或者在达到换行符或文件末尾(前者为准)
  • 换行符(\n)会使fgets停止,但函数将其视为有效字符,并包含在复制到str的字符串中,在将字符复制到str之后,会自动添加\0,导致只能读取num-1字符

参数部分上:

str

  • 指向复制字符串读取到char数组的指针(这里提前开辟好数组)

num:

  • 复制到str中的最大字符数(包括‘\0’字符-字符串)

返回值:

  • 成功,返回str指针,失败,返回EOF
int main()
{FILE* pf = fopen("test1.txt", "r");if (pf == NULL){perror("fopen fail!!!");return;}char ch[1000]="xxxxxxx";fgets(ch, 7, pf);printf("%s", ch);fclose(pf);pf = NULL;return 0;
}

在这里插入图片描述

说明】:给\0留了一个位置


5.6 fscanf和fprintf函数

fprintfscanf属于格式化输入输出函数,将不同数据类型放在结构体中进行统一管理

struct S
{char a[1000];int p;float pa;
};

5.7 fprintf()

在这里插入图片描述

函数部分说明】:

功能上

  • 按格式化数据写入流,如果format包含格式说明符(%开头的子序列),则格式化format后面的其他参数并将其插入到生成的字符串中,代替其各自的说明符.
  • 根据格式说明符顺序,匹配不同类型对应的数据,输入到text1.txt中去。

返回值:

  • 成功,返回写入字符总数,失败,则返回负数
int main()
{struct S s={"zhangsan",100,4.3};FILE* pf = fopen("test1.txt", "w");if (pf == NULL){perror("fopen fail!!!");return;}fprintf(pf,"%s %d %f", s.a, s.p, s.pa);fclose(pf);pf = NULL;return 0;
}

5.8 fscanf()

在这里插入图片描述

函数部分说明】:

功能:

  • 从流中读取数据,并根据格式将其存储到其他参数指向的位置。
  • 该对象由格式化字符串的相应格式说明符指示。
  • 根据格式说明符顺序,匹配text1.txt对应的数据,输入到对应的数据变量中

返回值:

成功后,该函数返回已成功填充的参数列表的项数,失败,EOF

int main()
{struct S s;//这里没有初始化,目的是通过fscanf赋值FILE* pf = fopen("test1.txt", "r");if (pf == NULL){perror("fopen fail!!!");return;}	fscanf(pf, "%s %d %f", s.a, &(s.p), &(s.pa));printf("%s %d %f", s.a, s.p, s.pa);fclose(pf);pf = NULL;return 0;
}

5.9 sprintf和sscanf函数

5.9.1 sprintf()

在这里插入图片描述

函数部分说明】:

功能:

从字符串中读取格式化数据(将字符数组中的字符串按照格式说明符转换为对应的格式化数据)

5.9.2 sscanf

在这里插入图片描述

函数部分说明】:

功能:

将格式化数据写入字符串(格式化数据转换为字符串存放在字符数组中)

基于以上两个函数使用场景:

int main()
{//将格式化的数据转换为字符串存放在p数组中struct S s = { "zhangsan",100,4.3 };char p[1000] = { 0 };sprintf(p, "%s %d %f", s.a, s.p, s.pa);printf("%s\n", p);//从p这个字符串中提取格式化的数据(用p数组中的数据,为结构体t成员赋值)struct S t;sscanf(p, "%s %d %f", t.a, &(t.p), &(t.pa));printf("%s %d %lf", s.a, s.p, s.pa);return 0;
}

小总结

在这里插入图片描述


六、二进制的方式读写函数

6.1 fwrite()

在这里插入图片描述

函数部分说明】:
请添加图片描述

功能:

  • 二进制输出,将 count 元素数组(每个元素的大小为 size bytes)ptr 指向的内存块写入中的当前位置

返回值:

  • 成功将返回写入元素个数
  • 如果此数字与 count 参数不同,则写入错误会阻止函数完成
  • 如果 sizecount 为零,则函数返回零,错误指示器保持不变。
int main()
{FILE* pf = fopen("test1.txt", "wb");//打开一个二级制文件if (pf == NULL){perror("fopen fail!!!");return;}int nums[] = { 1,2,3,4,5,6,7 };fwrite(nums, sizeof(int), 7, pf);fclose(pf);pf = NULL;return 0;
}

注意】:这里是通过二进制的形式写入文本文件中,如果想要看懂输入的数据,可以在打开方式选择二进制编辑器或者使用fread函数读取出来


6.2 fread()

在这里插入图片描述

函数部分说明】:

  • 功能:
  • 二进制输入,从流中读取 count 元素的数组,每个元素的大小为 bytes,并将它们存储在 ptr 指定的内存块中。

返回值:

  • 成功将返回写入实际元素个数
  • 如果此数字与 count 参数不同,则表示读取时发生读取错误或达到文件末尾
  • 如果 sizecount 为零,则该函数返回零, ptr 指向的流状态和内容保持不变

比如:如果实际文件中只有7个字符,count是14,那么读到7给字符就结束(返回值 < count就返回)

int main()
{FILE* pf = fopen("test1.txt", "rb");//打开一个二级制文件if (pf == NULL){perror("fopen fail!!!");return;}//int nums[] = { 1,2,3,4,5,6,7 };//fwrite(nums, sizeof(int), 7, pf);//读取二进制存放的信息int nums[10] = { 0 };fread(nums, sizeof(int), 10, pf);for (int i = 0; i < 10; i++){printf("%d ", nums[i]);}fclose(pf);pf = NULL;return 0;
}

在这里插入图片描述


七、文件的随机读写

由于文本文件和二进制文件使用方面存在差异,下面三个函数将采用二进制文件

7.1 fseek()

在这里插入图片描述

函数部分说明】:

功能上:

  • 重新定位流位置指示器,根据文件指针的位置和偏移量定位文件指针

返回值:

  • 成功,返回零,失败,返回非零值

注意】:

  • 二进制文件:要从原点偏移的字节数
  • 文本文件:零或 ftell 返回的值

【原点】

特别注意的是起源(从哪个位置),用作偏移参考位置

  • SEEK_SET :文件开头
  • SEEK_CUR :文件指针的当前位置
  • SEEK_END: 文件末尾
int main()
{FILE* pf = fopen("test1.txt", "wb");//打开一个二级制文件if (pf == NULL){perror("fopen fail!!!");return;}fputs("This is an apple", pf);fseek(pf, 3, SEEK_SET);fputs("sam", pf);fseek(pf, -3, SEEK_END);//文件指针往前走fputs("xxx", pf);fclosereturn 0;
}

在这里插入图片描述

7.2 ftell()

在这里插入图片描述

函数部分说明】:

功能上:

  • 返回流的位置指示器的当前值(返回文件指针相对于起始位置的偏移量 )

返回值:

  • 对于二进制流,这是从文件开头开始的字节
  • 对于文本流,数值可能没有意义
int main()
{FILE* pf = fopen("test1.txt", "wb");//打开一个二级制文件if (pf == NULL){perror("fopen fail!!!");return;}fputs("This is an apple", pf);fseek(pf, 0, SEEK_END);int size = ftell(pf);printf("%d", size);//size==16,源头到参考位置的字节数fclose(pf);pf = NULL;return 0;
}

7.3 rewind()

image-20240429202328302

函数部分说明】:

  • 功能:让文件指针的位置回到文件的起始位置
int main()
{FILE* pf = fopen("test1.txt", "wb");//打开一个二级制文件if (pf == NULL){perror("fopen fail!!!");return;}fputs("This is an apple", pf);fseek(pf, 0, SEEK_END);rewind(pf);int size = ftell(pf);printf("%d", size);fclose(pf);pf = NULL;return 0;
}

请添加图片描述


八、文件读取结束的判断

牢记】:在文件读取过程中,不能用feof函数的返回值直接判断文件是否结束

8.1 ferror()

在这里插入图片描述

函数部分说明】:

  • 功能:检查错误指示器
  • 返回值:检查是否设置了与关联的错误指示器,如果设置了,则返回一个不同于零的值

8.2 feof()

在这里插入图片描述

函数部分说明】:

  • 功能:检查文件结束指示器

  • 返回值:**如果设置了与流关联的文件结束指示符,则返回非零值。**否则,返回零。

小总结

文本文件读取是否结束:判断返回值是否为EOF(fgetc)或者NULL(fgets)

二进制文件读取是否结束:判断返回值是否小于实际要读的个数。


检查文件读取结束场景

while ((c = fgetc(fp)) != EOF) // 标准C I/O读取
{putchar(c);
}//判断是什么原因结束的if (ferror(fp))
puts("I/O error when reading");else if (feof(fp))
puts("End of file reached successfully");

九、文件缓冲区

ANSIC标准采⽤“缓冲文件系统”处理的数据⽂件的,所谓缓冲⽂件系统是指系统⾃动地在内存中为程序中每⼀个正在使⽤的⽂件开辟⼀块“⽂件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才⼀起送到磁盘上。如果从磁盘向计算机读⼊数据,则从磁盘⽂件中读取数据输⼊到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的⼤⼩根据C编译系统决定的.上述过程转换为下图展示。

验证】:

int main()
{
FILE*pf = fopen("test.txt", "w");
fputs("abcdef", pf);//先将代码放在输出缓冲区
printf("睡眠10秒-已经写数据了,打开test.txt⽂件,发现⽂件没有内容\n");
Sleep(10000);
printf("刷新缓冲区\n");
fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到⽂件(磁盘)
//注:fflush 在⾼版本的VS上不能使⽤了
printf("再睡眠10秒-此时,再次打开test.txt⽂件,⽂件有内容了\n");
Sleep(10000);
fclose(pf);
//注:fclose在关闭⽂件的时候,也会刷新缓冲区
pf = NULL;
return 0;
}

目的】:

程序延迟执行时间内,检查文本编辑器是否存在数据,等待程序睡眠时间过去,再次检查文本编辑器是否存在数据,验证内存和外存之间存在缓冲区

请添加图片描述
请添加图片描述

结论】:

因为有缓冲区的存在,C语⾔在操作文件的时候,需要做刷新缓冲区或者在⽂件操作结束的时候关闭文件。如果不做,可能导致读写⽂件的问题


请添加图片描述

以上就是本篇文章的所有内容,在此感谢大家的观看!这里是店小二C语言笔记,希望对你在学习C语言中有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React组件通信——兄弟组件

兄弟组件通信 方法一&#xff1a;状态提升 子组件先将数据传递到父组件&#xff0c;父组件再把数据传到另一个子组件中。 import { useState } from "react"; // 定义A组件&#xff0c;向B组件发送数据 function A({ onGetMsg }) {const name "this is A na…

fyne apptab布局

fyne apptab布局 AppTabs 容器允许用户在不同的内容面板之间切换。标签要么只是文本&#xff0c;要么是文本和一个图标。建议不要混合一些有图标的标签和一些没有图标的标签。 package mainimport ("fyne.io/fyne/v2/app""fyne.io/fyne/v2/container"//&…

PolarDB分布式架构学习笔记

PolarDB分布式是什么&#xff1f; 业务场景有哪些&#xff1f; 分布式焦点问题&#xff1f; 技术架构 CN DN介绍 CDC组件介绍 Columnar组件介绍 视频学习&#xff1a;PolarDB 实操课 第一讲&#xff1a;PolarDB分布式版架构介绍_哔哩哔哩_bilibili

都在说的跨网文件共享系统是什么?企业该怎么甄选?

跨网文件共享系统成为越来越受关注的产品焦点&#xff0c;那么跨网文件共享系统是什么呢&#xff1f;跨网文件共享是指在不同网络之间共享文件的过程&#xff0c;使得不同网络中的用户可以访问和使用共享的文件。 原则上而言&#xff0c;不同网络间的文件是无法共享的&#xff…

OAK相机如何将 YOLOv9 模型转换成 blob 格式?

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是Ashely。 专…

最新消息:腾讯大模型App“腾讯元宝“上线了

&#x1f9d9;‍♂️ 诸位好&#xff0c;吾乃斜杠君&#xff0c;编程界之翘楚&#xff0c;代码之大师。算法如流水&#xff0c;逻辑如棋局。 &#x1f4dc; 吾之笔记&#xff0c;内含诸般技术之秘诀。吾欲以此笔记&#xff0c;传授编程之道&#xff0c;助汝解技术难题。 &#…

Python代码:二十八、密码游戏

1、题目 牛牛和牛妹一起玩密码游戏&#xff0c;牛牛作为发送方会发送一个4位数的整数给牛妹&#xff0c;牛妹接收后将对密码进行破解。 破解方案如下&#xff1a;每位数字都要加上3再除以9的余数代替该位数字&#xff0c;然后将第1位和第3位数字交换&#xff0c;第2位和第4位…

2024年艺术鉴赏与科学教育国际会议(ICAASE 2024)

2024年艺术鉴赏与科学教育国际会议 2024 International Conference on Art Appreciation and Science Education 【1】会议简介 2024年艺术鉴赏与科学教育国际会议是一场集艺术、科学和教育于一体的国际性学术盛会。本次会议旨在推动艺术鉴赏与科学教育领域的深入交流与合作&am…

C语言(字符函数和字符串函数)1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

python API自动化(接口测试基础与原理)

1.接口测试概念及应用 什么是接口 接口是前后端沟通的桥梁&#xff0c;是数据传输的通道&#xff0c;包括外部接口、内部接口,内部接口又包括&#xff1a;上层服务与下层服务接口&#xff0c;同级接口 外部接口&#xff1a;比如你要从 别的网站 或 服务器 上获取 资源或信息 &a…

SpringMVC框架学习笔记(四):模型数据 以及 视图和视图解析器

1 模型数据处理-数据放入 request 说明&#xff1a;开发中, 控制器/处理器中获取的数据如何放入 request 域&#xff0c;然后在前端(VUE/JSP/...)取出显 示 1.1 方式 1: 通过 HttpServletRequest 放入 request 域 &#xff08;1&#xff09;前端发送请求 <h1>添加主人…

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask flyfish Word-level Language Modeling using RNN and Transformer word_language_model PyTorch 提供的 word_language_model 示例展示了如何使用循环神经网络RNN(GRU或LSTM)和 Transforme…

【AI大模型】如何让大模型变得更聪明?基于时代背景的思考

【AI大模型】如何让大模型变得更聪明 前言 在以前&#xff0c;AI和大模型实际上界限较为清晰。但是随着人工智能技术的不断发展&#xff0c;基于大规模预训练模型的应用在基于AI人工智能的技术支持和帮助上&#xff0c;多个领域展现出了前所未有的能力。无论是自然语言处理、…

JavaScript的垃圾回收机制

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、垃圾…

匹配字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python提供了re模块&#xff0c;用于实现正则表达式的操作。在实现时&#xff0c;可以使用re模块提供的方法&#xff08;如search()、match()、finda…

信息系统项目管理师0603:项目整合管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 文章目录 项目整合管理 — 考点总结(可直接理解记忆) 输入、输出、工具和技术 历年考题直接考输入,输出、工具和技术的有17年11月第34、35,19年5月第34、35,20年11月27、28,21年5月第26,28,21年11月第28,22年5月第25,22年11月第22考题 项目章程是正…

CasaOS玩客云安装全平台高速下载器Gopeed并实现远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

基于Python的酒店客房入侵检测系统的设计与实现

基于Python的酒店客房入侵检测系统的设计与实现 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 酒店客房入侵管理界面 结合上文的结构搭建和用户需求&#xff0c;酒店客房入侵检测系统的…

【Unity Shader入门精要 第12章】屏幕后处理效果(一)

1. 原理和过程 屏幕后处理是绑定摄像机的&#xff0c;通过抓取当前摄像机渲染的图像作为 SrcTextrue&#xff0c;然后按需依次调用处理接口&#xff0c;对 SrcTexture 进行处理&#xff0c;最后将处理完成的 DstTexture 显示到屏幕上&#xff0c;整个过程的调度通过 C# 脚本完…

【机器学习】Adaboost: 强化弱学习器的自适应提升方法

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Adaboost: 强化弱学习器的自适应提升方法引言Adaboost基础概念弱学习器与强学习…