合肥的网站建设公司哪家好/seo营销是什么

合肥的网站建设公司哪家好,seo营销是什么,海外网络加速器免费,做农产品的网站目录 文件的基本概念文本文件和二进制文件的差异 文件指针FILE 结构体文件指针的初始化和赋值 文件打开与关闭常见操作文件的打开文件的关闭 常见问题打开文件时的路径问题打开文件失败的常见原因fclose 函数的重要性 文件读写操作常见操作字符读写字符串读写格式化读写二进制读…

目录

  • 文件的基本概念
    • 文本文件和二进制文件的差异
  • 文件指针
    • FILE 结构体
    • 文件指针的初始化和赋值
  • 文件打开与关闭
    • 常见操作
      • 文件的打开
      • 文件的关闭
    • 常见问题
      • 打开文件时的路径问题
      • 打开文件失败的常见原因
      • fclose 函数的重要性
  • 文件读写操作
    • 常见操作
      • 字符读写
      • 字符串读写
      • 格式化读写
      • 二进制读写
    • 常见问题
      • 字符读写的性能考虑
      • 字符串读写的边界问题
      • 格式化读写的精度和错误处理
      • 二进制读写的字节序问题
  • 文件指针的定位
    • 常见操作
      • fseek函数
      • ftell函数
      • rewind函数
    • 常见应用场景
      • fseek 函数的偏移量计算
      • ftell 函数的应用场景
  • 文件错误处理
    • 常见操作
      • ferror函数
      • feof函数
      • clearerr 函数
      • 自定义错误处理函数

文件的基本概念

文本文件和二进制文件的差异

  • 存储方式
    • 文本文件:以字符编码形式存储,例如 ASCII 码。每个字符(如字母、数字、标点符号)都有对应的编码值,存储时按编码值的二进制形式写入文件。例如,字符 ‘A’ 的 ASCII 码是 65,在文件中存储为二进制的 01000001。
    • 二进制文件:直接以数据在内存中的二进制表示形式存储。例如,一个整数 10 在内存中以 32 位二进制 00000000 00000000 00000000 00001010 存储,在二进制文件中也是这样的形式。
  • 可读性
    • 文本文件:可以用文本编辑器直接查看和编辑,因为其内容是人类可读的字符。
    • 二进制文件:用文本编辑器打开会显示乱码,因为它存储的是二进制数据,需要特定的程序来解析。
  • 应用场景
    • 文本文件:常用于存储配置信息、日志文件、代码文件等,方便人类查看和修改。
    • 二进制文件:常用于存储图像、音频、视频等多媒体数据,以及程序的中间数据、数据库文件等,能更高效地存储和处理大量数据。

文件指针

FILE 结构体

FILE 结构体是一个复杂的数据结构,包含了文件操作所需的各种信息,不同的编译器实现可能会有所不同,但通常包含以下几个重要成员:

  • 文件状态信息:记录文件的打开模式、是否出错、是否到达文件末尾等状态。
  • 文件缓冲区指针:指向用于文件读写的缓冲区,以提高文件操作的效率。
  • 文件当前位置指针:指示当前文件读写的位置。

文件指针的初始化和赋值

在使用文件指针之前,需要将其初始化为 NULL,以避免成为野指针。例如:

FILE *fp = NULL;

当使用 fopen 函数打开文件后,将返回的文件指针赋值给 fp,此时 fp 就指向了打开的文件。

文件打开与关闭

常见操作

文件的打开

使用fopen函数来打开一个文件,其原型如下:

FILE *fopen(const char *filename, const char *mode);
  • filename:要打开的文件的名称,可以包含文件的路径。
  • mode:打开文件的模式,常见的模式有:
    • "r":以只读模式打开文本文件,文件必须存在。
    • "w":以写入模式打开文本文件,如果文件不存在则创建,如果文件存在则清空文件内容。
    • "a":以追加模式打开文本文件,如果文件不存在则创建,写入的数据将追加到文件末尾。
    • "rb":以只读模式打开二进制文件,文件必须存在。
    • "wb":以写入模式打开二进制文件,如果文件不存在则创建,如果文件存在则清空文件内容。
    • "ab":以追加模式打开二进制文件,如果文件不存在则创建,写入的数据将追加到文件末尾。
    • "r+":以读写模式打开文本文件,文件必须存在。
    • "w+":以读写模式打开文本文件,如果文件不存在则创建,如果文件存在则清空文件内容。
    • "a+":以读写模式打开文本文件,如果文件不存在则创建,写入的数据将追加到文件末尾,在读取数据前需要将文件指针移动到文件开头。
    • "rb+""wb+""ab+":分别对应二进制文件的读写模式。
  • 示例代码:
#include <stdio.h>int main() {FILE *fp;// 以写入模式打开文件fp = fopen("test.txt", "w");if (fp == NULL) {perror("文件打开失败");return 1;}// 文件操作...fclose(fp);return 0;
}

文件的关闭

使用fclose函数来关闭一个已打开的文件,其原型如下:

int fclose(FILE *stream);

stream:要关闭的文件指针。
返回值:如果文件关闭成功,返回 0;否则返回 EOF(-1)。

常见问题

打开文件时的路径问题

  • 绝对路径:完整地指定了文件在文件系统中的位置,从根目录开始。
    • 在 Windows 系统中,“C:\Users\Username\Documents\test.txt”;
    • 在 Linux 系统中,“/home/username/Documents/test.txt”。
  • 相对路径:相对于当前工作目录的路径。例如,当前工作目录是 /home/username,要打开 Documents 目录下的 test.txt 文件,可以使用相对路径 “Documents/test.txt”。

打开文件失败的常见原因

  • 文件不存在:使用 “r”、“r+”、“rb”、“rb+” 等模式打开文件时,如果文件不存在,fopen 会返回 NULL。
  • 权限不足:没有足够的权限访问文件或目录,例如在 Linux 系统中,尝试以写入模式打开一个只读文件。
  • 文件被占用:文件正在被其他程序使用,无法同时打开。

fclose 函数的重要性

关闭文件不仅可以释放系统资源,还可以确保文件缓冲区中的数据被正确写入磁盘。如果不关闭文件,可能会导致数据丢失或文件损坏。例如,在程序结束时,如果没有调用 fclose 关闭文件,缓冲区中的数据可能不会被写入文件。

文件读写操作

常见操作

字符读写

  • fgetc函数:从文件中读取一个字符,其原型如下:
int fgetc(FILE *stream);

返回值:如果读取成功,返回读取的字符;如果到达文件末尾或发生错误,返回 EOF。

  • fputc函数:向文件中写入一个字符,其原型如下:
int fputc(int c, FILE *stream);

c:要写入的字符。
返回值:如果写入成功,返回写入的字符;如果发生错误,返回 EOF。

  • 示例代码:
#include <stdio.h>int main() {FILE *fp;// 以写入模式打开文件fp = fopen("test.txt", "w");if (fp == NULL) {perror("文件打开失败");return 1;}// 写入字符fputc('H', fp);fputc('e', fp);fputc('l', fp);fputc('l', fp);fputc('o', fp);fclose(fp);// 以只读模式打开文件fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}// 读取字符int ch;while ((ch = fgetc(fp)) != EOF) {putchar(ch);}fclose(fp);return 0;
}

字符串读写

  • fgets函数:从文件中读取一行字符串,其原型如下:
char *fgets(char *str, int n, FILE *stream);

str:用于存储读取的字符串的字符数组。
n:最多读取的字符数(包括字符串结束符 ‘\0’)。
返回值:如果读取成功,返回 str;如果到达文件末尾或发生错误,返回 NULL。

  • fputs函数:向文件中写入一个字符串,其原型如下:
int fputs(const char *str, FILE *stream);

str:要写入的字符串。
返回值:如果写入成功,返回非负数;如果发生错误,返回 EOF。

  • 示例代码:
#include <stdio.h>int main() {FILE *fp;// 以写入模式打开文件fp = fopen("test.txt", "w");if (fp == NULL) {perror("文件打开失败");return 1;}// 写入字符串fputs("Hello, World!\n", fp);fclose(fp);// 以只读模式打开文件fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}// 读取字符串char buffer[100];while (fgets(buffer, sizeof(buffer), fp) != NULL) {printf("%s", buffer);}fclose(fp);return 0;
}

格式化读写

  • fscanf函数:从文件中按照指定的格式读取数据,其原型如下:
int fscanf(FILE *stream, const char *format, ...);

stream:要读取的文件指针。
format:格式化字符串,指定读取数据的格式。
返回值:成功匹配并赋值的输入项的数量,如果到达文件末尾或发生错误,返回 EOF。

  • fprintf函数:向文件中按照指定的格式写入数据,其原型如下:
int fprintf(FILE *stream, const char *format, ...);

stream:要写入的文件指针。
format:格式化字符串,指定写入数据的格式。
返回值:成功写入的字符数,如果发生错误,返回负数。

  • 示例代码:
#include <stdio.h>int main() {FILE *fp;// 以写入模式打开文件fp = fopen("test.txt", "w");if (fp == NULL) {perror("文件打开失败");return 1;}// 写入格式化数据int num = 10;float f = 3.14;fprintf(fp, "整数: %d, 浮点数: %f\n", num, f);fclose(fp);// 以只读模式打开文件fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}// 读取格式化数据int read_num;float read_f;fscanf(fp, "整数: %d, 浮点数: %f", &read_num, &read_f);printf("读取的整数: %d, 读取的浮点数: %f\n", read_num, read_f);fclose(fp);return 0;
}

二进制读写

  • fread函数:从文件中读取二进制数据,其原型如下:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

ptr:用于存储读取数据的内存地址。
size:每个数据项的大小(字节数)。
nmemb:要读取的数据项的数量。
返回值:实际读取的数据项的数量。

  • fwrite函数:向文件中写入二进制数据,其原型如下:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

ptr:要写入的数据的内存地址。
size:每个数据项的大小(字节数)。
nmemb:要写入的数据项的数量。
返回值:实际写入的数据项的数量。

  • 示例代码:
#include <stdio.h>typedef struct {int id;char name[20];
} Student;int main() {FILE *fp;// 以二进制写入模式打开文件fp = fopen("students.dat", "wb");if (fp == NULL) {perror("文件打开失败");return 1;}// 写入二进制数据Student s = {1, "John"};fwrite(&s, sizeof(Student), 1, fp);fclose(fp);// 以二进制只读模式打开文件fp = fopen("students.dat", "rb");if (fp == NULL) {perror("文件打开失败");return 1;}// 读取二进制数据Student read_s;fread(&read_s, sizeof(Student), 1, fp);printf("ID: %d, Name: %s\n", read_s.id, read_s.name);fclose(fp);return 0;
}

常见问题

字符读写的性能考虑

  • 缓冲区机制:fgetc 和 fputc 函数在读写字符时,会使用文件缓冲区。当调用 fputc 写入字符时,字符先被写入缓冲区,当缓冲区满或调用 fclose 时,缓冲区中的数据才会被写入磁盘。同样,调用 fgetc 读取字符时,会先从缓冲区中读取,如果缓冲区为空,则从磁盘读取一批数据到缓冲区。
  • 频繁读写的性能问题:由于每次调用 fgetc 或 fputc 都可能涉及到缓冲区的操作,频繁的字符读写会导致性能下降。在需要大量读写字符时,可以考虑使用 fread 和 fwrite 函数进行批量读写。

字符串读写的边界问题

  • fgets 函数的截断问题:fgets 函数最多读取 n - 1 个字符,然后在末尾添加字符串结束符 ‘\0’。如果文件中的一行字符数超过 n - 1,则会截断该行,剩余的字符会在下一次调用 fgets 时读取。
  • fputs 函数的换行问题:fputs 函数不会自动添加换行符,需要手动添加。例如:
fputs("Hello\n", fp);

格式化读写的精度和错误处理

  • 格式化精度:在使用 fscanf 和 fprintf 进行格式化读写时,需要注意格式化字符串的精度。例如,使用 %.2f 可以控制浮点数的输出精度为两位小数。
  • 错误处理:fscanf 函数在读取数据时,如果输入数据的格式与格式化字符串不匹配,可能会导致读取错误。可以通过检查 fscanf 的返回值来判断是否读取成功。

二进制读写的字节序问题

  • 字节序:在不同的计算机系统中,整数等多字节数据的存储方式可能不同,分为大端字节序(Big Endian)和小端字节序(Little Endian)。大端字节序将高位字节存储在低地址,小端字节序将低位字节存储在低地址。
  • 跨平台问题:在进行二进制文件读写时,如果涉及到跨平台操作,需要注意字节序的问题。可以通过字节序转换函数(如 htons、htonl、ntohs、ntohl)来确保数据的正确读写。

文件指针的定位

在文件操作过程中,有时需要移动文件指针的位置,以便在文件的不同位置进行读写操作。

常见操作

fseek函数

  • fseek函数用于将文件指针移动到指定的位置,其原型如下:
int fseek(FILE *stream, long offset, int whence);

stream:要操作的文件指针。
offset:偏移量,以字节为单位。
whence:偏移的起始位置,有三个可选值:
SEEK_SET:从文件开头开始偏移。
SEEK_CUR:从当前文件指针位置开始偏移。
SEEK_END:从文件末尾开始偏移。
返回值:如果成功,返回 0;否则返回非零值。

  • 示例代码:
#include <stdio.h>int main() {FILE *fp;// 以只读模式打开文件fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}// 将文件指针移动到文件开头偏移3个字节的位置fseek(fp, 3, SEEK_SET);int ch = fgetc(fp);printf("读取的字符: %c\n", ch);fclose(fp);return 0;
}

ftell函数

  • ftell函数用于获取当前文件指针的位置,其原型如下:
long ftell(FILE *stream);

stream:要操作的文件指针。
返回值:当前文件指针相对于文件开头的偏移量(字节数),如果发生错误,返回 - 1。

  • 示例代码:
#include <stdio.h>int main() {FILE *fp;// 以只读模式打开文件fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}// 获取当前文件指针的位置long pos = ftell(fp);printf("当前文件指针位置: %ld\n", pos);fclose(fp);return 0;
}

rewind函数

  • rewind函数用于将文件指针移动到文件开头,其原型如下:
void rewind(FILE *stream);

stream:要操作的文件指针。

  • 示例代码:
#include <stdio.h>int main() {FILE *fp;// 以只读模式打开文件fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}// 移动文件指针到文件末尾fseek(fp, 0, SEEK_END);// 将文件指针移动到文件开头rewind(fp);int ch = fgetc(fp);printf("读取的字符: %c\n", ch);fclose(fp);return 0;
}

常见应用场景

fseek 函数的偏移量计算

  • 正数和负数偏移:fseek 函数的偏移量 offset 可以是正数或负数。正数表示向文件末尾方向偏移,负数表示向文件开头方向偏移。例如,fseek(fp, -10, SEEK_CUR) 表示将文件指针从当前位置向文件开头方向移动 10 个字节。
  • 偏移量的范围:偏移量的范围受到文件大小和系统限制的影响。在某些系统中,偏移量可能不能超过文件的最大长度。

ftell 函数的应用场景

文件大小计算:可以通过将文件指针移动到文件末尾,然后使用 ftell 函数获取文件指针的位置,从而得到文件的大小。例如:

#include <stdio.h>int main() {FILE *fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}fseek(fp, 0, SEEK_END);long size = ftell(fp);printf("文件大小: %ld 字节\n", size);fclose(fp);return 0;
}

文件错误处理

常见操作

ferror函数

ferror函数用于检查文件操作是否发生错误,其原型如下:

int ferror(FILE *stream);

stream:要检查的文件指针。
返回值:如果发生错误,返回非零值;否则返回 0。

feof函数

feof函数用于检查文件指针是否到达文件末尾,其原型如下:

int feof(FILE *stream);

stream:要检查的文件指针。
返回值:如果到达文件末尾,返回非零值;否则返回 0。

  • 示例代码:
#include <stdio.h>int main() {FILE *fp;// 以只读模式打开文件fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}int ch;while ((ch = fgetc(fp)) != EOF) {putchar(ch);}if (ferror(fp)) {printf("文件读取发生错误\n");} else if (feof(fp)) {printf("到达文件末尾\n");}fclose(fp);return 0;
}

clearerr 函数

clearerr 函数用于清除文件的错误标志和文件结束标志,其原型如下:

void clearerr(FILE *stream);

stream:要操作的文件指针。

在发生错误后,可以使用 clearerr 函数清除错误标志,以便继续进行文件操作。例如:

#include <stdio.h>int main() {FILE *fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}int ch;while ((ch = fgetc(fp)) != EOF) {if (ferror(fp)) {printf("文件读取发生错误\n");clearerr(fp); // 清除错误标志}putchar(ch);}fclose(fp);return 0;
}

自定义错误处理函数

可以编写自定义的错误处理函数,以便在文件操作发生错误时进行统一处理。例如:

#include <stdio.h>void handle_file_error(FILE *fp, const char *message) {if (ferror(fp)) {perror(message);clearerr(fp);}
}int main() {FILE *fp = fopen("test.txt", "r");if (fp == NULL) {perror("文件打开失败");return 1;}int ch;while ((ch = fgetc(fp)) != EOF) {handle_file_error(fp, "文件读取错误");putchar(ch);}fclose(fp);return 0;
}

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

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

相关文章

Spring Boot框架总结(超级详细)

前言 本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级剖析、内嵌tomcat源码级剖析、缓存深入、多环境部署等等&#xff0c;如果能耐心看完&#xff0c;想必会有不少收获。 一、Spring Boot基础应用 Spring Boot特征 概念&#xff1a; 约定优于配置&#…

AI开发利器:miniforge3无感平替Anaconda3

相信有和我遭遇一样的同学吧&#xff0c;之前装了anaconda用的挺好的&#xff08;可以参考AI开发利器&#xff1a;Anaconda&#xff09;&#xff0c;但是考虑到有可能收到软件侵权的律师函的风险&#xff0c;还是果断找个替代品把anaconda卸载掉。miniforge就是在这样的背景下发…

用 Vue 3.5 TypeScript 做了一个日期选择器(改进版)

上一篇 已经实现了一个日期选择器&#xff0c;只不过是模态窗的形式&#xff0c;这个版本改为文本框弹出&#xff0c;点击空白处可关闭日历 代码也增加了不少 <template><div><!-- 添加文本框 --><div class"date-picker-input-wrapper">&l…

【爬虫】开篇词

一、网络爬虫概述 二、网络爬虫的应用场景 三、爬虫的痛点 四、需要掌握哪些技术&#xff1f; 在这个信息爆炸的时代&#xff0c;如何高效地获取和处理海量数据成为一项核心技能。无论是数据分析、商业情报、学术研究&#xff0c;还是人工智能训练&#xff0c;网络爬虫&…

文字转语音chat-tts-ui

去年已经使用过chattts了&#xff0c;但是昨晚想用的时候却记怎么打开了&#xff0c;找了一下以前的笔记 MacOS 下源码部署chat-tts-ui 配置好 python3.9-3.11 环境,安装git &#xff0c;执行命令 brew install libsndfile git python3.10 继续执行 brew install ffmpeg ​ …

基于SpringBoot+Vue的瑜伽课体验课预约系统【附源码】

基于SpringBootVue的瑜伽课体验课预约系统 一、系统技术说明二、运行说明三、系统的演示四、系统的核心代码演示 一、系统技术说明 框架&#xff1a;SpringbootVue 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软…

sparkTTS window 安装

SparkTTS 的简介 Spark-TTS是一种基于SpardAudio团队提出的 BiCodec 构建的新系统&#xff0c;BiCodec 是一种单流语音编解码器&#xff0c;可将语音策略性地分解为两种互补的标记类型&#xff1a;用于语言内容的低比特率语义标记和用于说话者特定属性的固定长度全局标记。这种…

ApoorvCTF Rust语言逆向实战

上周参加了国外的比赛&#xff0c;名称叫&#xff1a;ApoorvCTF 看一下老外的比赛跟我们有什么不同&#xff0c;然后我根据国内比赛对比发现&#xff0c;他们考点还是很有意思的&#xff0c;反正都是逆向&#xff0c;哈哈哈 Rusty Vault 题目描述&#xff1a; In the heart…

Git和GitHub基础教学

文章目录 1. 前言2. 历史3. 下载安装Git3.1 下载Git3.2 安装Git3.3 验证安装是否成功 4. 配置Git5. Git基础使用5.1 通过Git Bash使用5.1.1 创建一个新的仓库。5.1.1.1 克隆别人的仓库5.1.1.2 自己创建一个本地仓库 5.1.2 管理存档 5.2 通过Visual Studio Code使用 6. Git完成远…

MySQL中like模糊查询如何优化?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL中like模糊查询如何优化?】面试题。希望对大家有帮助&#xff1b; MySQL中like模糊查询如何优化? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中&#xff0c;LIKE 模糊查询虽然非常常见&#xff0c;…

⭐LeetCode(数学分类) 2. 两数相加——暴力与优化⭐

⭐LeetCode(数学分类) 2. 两数相加——暴力与优化⭐ 提示&#xff1a; 每个链表中的节点数在范围 [1, 100] 内 0 < Node.val < 9 题目数据保证列表表示的数字不含前导零 题解&#xff1a; 暴力与优化&#xff0c;暴力即转换为十进制解题&#xff0c;优化即直接在链表上进…

①Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网

Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网https://item.taobao.com/item.htm?ftt&id784749793551 MODBUS TCP 通信单元 MODBUS TCP 转 RS485 MS-A1-50X1 系列概述 MS-A1-50X1 系列概述 MS-A1-50X1系列作为MODBUS TCP通信的服务器进行动作。可通…

C/C++蓝桥杯算法真题打卡(Day3)

一、P8598 [蓝桥杯 2013 省 AB] 错误票据 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std;int main() {int N;cin >> N; // 读取数据行数unordered_map<int, int> idCount; // 用于统计每个ID出现的次数vector<int> ids; …

<建模软件安装教程1>Blender4.2系列

Blender4.2安装教程 0注意&#xff1a;Windows环境下安装 第一步&#xff0c;百度网盘提取安装包。百度网盘链接&#xff1a;通过网盘分享的文件&#xff1a;blender.zip 链接: https://pan.baidu.com/s/1OG0jMMtN0qWDSQ6z_rE-9w 提取码: 0309 --来自百度网盘超级会员v3的分…

C语言八股---预处理,编译,汇编与链接篇

前言 从多个.c文件到达一个可执行文件的四步:   预处理–>编译–>汇编–>链接 预处理 预处理过程就是预处理器处理这些预处理指令(要不然编译器完全不认识),最终会生成 main.i的文件 主要做的事情有如下几点: 展开头文件展开宏条件编译删除注释添加行号等信息保留…

用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏

大家好&#xff01;今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括&#xff1a;控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂&#xff0c;适合初学者学习和实践。 游戏功能概述 玩家控制&#xff1a;使用键…

面向高质量视频生成的扩散模型方法-算法、架构与实现【附核心代码】

目录 算法原理 架构 代码示例 算法原理 正向扩散过程&#xff1a;从真实的视频数据开始&#xff0c;逐步向其中添加噪声&#xff0c;随着时间步 t 的增加&#xff0c;噪声添加得越来越多&#xff0c;最终将原始视频数据变成纯噪声。数学上&#xff0c;t 时刻的视频数据与 t…

游戏引擎学习第149天

今日回顾与计划 在今天的直播中&#xff0c;我们将继续进行游戏的开发工作&#xff0c;目标是完成资产文件&#xff08;pack file&#xff09;的测试版本。目前&#xff0c;游戏的资源&#xff08;如位图和声音文件&#xff09;是直接从磁盘加载的&#xff0c;而我们正在将其转…

ForceMimic:以力为中心的模仿学习,采用力运动捕捉系统进行接触丰富的操作

25年3月来自上海交大卢策吾教授团队的论文“ForceMimic: Force-Centric Imitation Learning with Force-Motion Capture System for Contact-Rich Manipulation”。 在大多数接触丰富的操作任务中&#xff0c;人类会将随时间变化的力施加到目标物体上&#xff0c;以补偿视觉引…

【愚公系列】《Python网络爬虫从入门到精通》045-Charles的SSL证书的安装

标题详情作者简介愚公搬代码头衔华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xff0c;阿里云签约作者&#xff0c;腾讯云优秀博主&…