【通关文件操作(下)】--文件的顺序读写(续),sprintf和sscanf函数,文件的随机读写,文件缓冲区,更新文件
目录
四.文件的顺序读写(续)
4.8--fwrite函数
4.9--fread函数
五.sprintf函数和sscanf函数
5.1--函数对比
5.2--sprintf函数
5.3--sscanf函数
六.文件的随机读写
6.1--fseek函数
6.2--ftell函数
6.3--rewind函数
七.文件缓冲区
7.1--fflush函数
八.更新文件
🔥个人主页:@草莓熊Lotso的个人主页
🎬作者简介:C++研发方向学习者
📖个人专栏:《C语言》
⭐️人生格言:生活是默默的坚持,毅力是永久的享受。
四.文件的顺序读写(续)
--在上篇文章中,我们学习的函数都是以文本形式的,剩下还有两个函数是以二进制文件,直接看下图。
这里我们继续介绍后面两个函数
4.8--fwrite函数
1. size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
功能:函数用于将数据块写入stream 指向的文件流中,是以2进制的形式写入的。
- ptr :指向要写入的数据块的指针。
- size :要写入的每个数据项的大小(以字节为单位)。
- count :要写入的数据项的数量。
- stream :指向 FILE 类型结构体的指针,指定了要写入数据的文件流。
- 需要包含 <stdio.h> 头文件。
- 在使用fwrite() 之前,需要确保文件已经以二进制可写方式打开。
- fwrite() 通常用于⼆进制数据的写入,如果写入文本数据,请谨慎处理换行符和编码等问题。
代码演示:
//fwrite函数演示
//结构体示例
#include<stdio.h>
struct S
{char name[20];int age;float score;
};
int main()
{FILE* ps = fopen("data.txt", "wb");if (ps == NULL){perror("fopen");return 1;}//写文件struct S s = {"zhaoxiehao",18,85.5f};if (fwrite(&s,sizeof(struct S),1, ps) != 1){perror("fwrite");return -1;}//关闭文件fclose(ps);ps == NULL;//避免变成野指针return 0;
}
//数组示例
#include<stdio.h>
int main()
{FILE* ps = fopen("data.txt", "wb");if (ps == NULL){perror("fopen");return 1;}//写文件int arr[] = { 1,2,3,4,5 };if (fwrite(arr,sizeof(int),5, ps) != 5){perror("fwrite");return -1;}//关闭文件fclose(ps);ps == NULL;//避免变成野指针return 0;
}
4.9--fread函数
1. size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
功能:函数用于从 stream 指向的文件流中读取数据块,并将其存储到 ptr 指向的内存缓冲区中。
- ptr :指向内存区域的指针,用于存储从文件中读取的数据。
- size :要读取的每个数据块的大小(以字节为单位)。
- count :要读取的数据块的数量。
- stream :指向 FILE 类型结构体的指针,指定了要从中读取数据的文件流。
- 需要包含 <stdio.h> 头文件。
- 在使用fread() 之前,需要确保文件已经以二进制可读方式打开(上篇中提到过在vs上怎么打开)。
- ptr 指向的内存区域必须足够大,以便存储指定数量和大小的数据块。
- 如果 fread() 成功读取了指定数量的数据块,则返回值等于 count ;如果读取数量少于count ,则可能已经到达文件结尾或者发上了错误。
- 在二进制文件读取时, fread() 是常⽤的函数,但对于文本文件读取,通常使用 fgets()或 fscanf()
代码演示:
//fread函数演示
//文件里是之前写出来的结构体信息
#include<stdio.h>
struct S
{char name[20];int age;float score;
};
int main()
{FILE* ps = fopen("data.txt", "rb");if (ps == NULL){perror("fopen");return 1;}//写文件struct S s = {0};if (fread(&s, sizeof(struct S), 1, ps) != 1){if (feof(ps)){printf("遇到了文件末尾\n");}else if (ferror(ps)){printf("读取错误");}}else{printf("%s %d %f", s.name, s.age, s.score);}//关闭文件fclose(ps);ps == NULL;//避免变成野指针return 0;
}
能成功读取并打印在屏幕上:
五.sprintf函数和sscanf函数
5.1--函数对比
我们通过一个表格来对比着看scanf/fscanf/sscanf,printf/fprintf/sprintf。
scanf | 针对标准输入(stdin)的格式化输入函数 |
printf | 针对标准输出(stdout)的格式化输出函数 |
fscanf | 针对所有输入流(可以是文件流,也可以是stdin)的格式化输入函数 |
fprintf | 针对所有输出流(可以是文件流,也可以是stdout)的格式化输出函数 |
sprintf | 将格式化的数据转换成字符串 |
sscanf | 从字符串中提取格式化的数据 |
前面学习了scanf/fscanf以及printf/fprintf函数,我们再来学习一下sprintf和sscanf函数
5.2--sprintf函数
1. int sprintf ( char * str, const char * format, ... );
- str :指向字符数组的指针,用于存储生成的字符串(需确保足够大以防止溢出)。
- format :格式化字符串,定义输出格式(如 %d 、 %f 、 %s 等)。
- ... :可变参数列表,提供与格式字符串中说明符对应的数据。
代码演示:
//sprintf函数
#include<stdio.h>
struct S
{char name[20];int age;float score;
};
int main()
{struct S s = { "zhaoxiehao",18,85.5f };char buf[200] = { 0 };sprintf(buf, "%s %f %d", s.name, s.score, s.age);printf("%s",buf);//只能按上面sprintf的顺序,打印成字符串形式return 0;
}
5.3--sscanf函数
1. i nt sscanf ( const char * str, const char * format, ...);
功能:从字符串中读取格式化数据。它与 scanf 类似,但输入源是内存中的字符串而非控制台或文件。常用于解析字符串中的结构化数据(如提取数字、分割文本等)。
参数:
- str :要解析的源字符串(输入数据来源)。
- format :格式化字符串,定义如何解析数据(如 %d 、 %f 、 %s 等)。
- ... :可变参数列表,提供存储数据的变量地址(需与格式字符串中的说明符匹配)
- 成功时:返回成功解析并赋值的参数数量(非负值)。
- 失败或未匹配任何数据:若输入结束或解析失败,返回 EOF (通常是 -1 )。
代码演示:
//sscanf函数
#include<stdio.h>
struct S
{char name[20];int age;float score;
};
int main()
{struct S s = { "zhaoxiehao",18,85.5f };char buf[200] = { 0 };sprintf(buf, "%s %f %d", s.name, s.score, s.age);printf("%s\n", buf);//只能按上面sprintf的顺序来打印字符串//这里buf里面已经有了数据了struct S t = { 0 };sscanf(buf, "%s %f %d", t.name, &(t.score), &(t.age));printf("%s %d %f",t.name,t.age,t.score);//这里可以按printf里的顺序打印结构体的数据return 0;
}
我们还可以对比看看两次打印的顺序:
六.文件的随机读写
6.1--fseek函数
1. int fseek ( FILE * stream, long int offset, int origin );
功能:根据文件指针的位置和偏移量来定位指针
参数:
- stream:指向 FILE 类型结构体的指针,指定了要操作的文件流。
- offset:表示偏移量,以字节为单位。它指定了从origin指定的位置开始,文件指针要移动的距离,可以是正数,负数,也可以是0。
- origin:指定偏移量的起始位置,是一个整数常量,有以下三种取值情况:
- SEEK_SET:文件开头,此时offset表示从文件开头开始的偏移量。
- SEEK_CUR:当前文件指针位置,此时offset是相对于当前位置(光标所在位置)的偏移量。
- SEEK_END:文件末尾,此时offset是从文件末尾开始的偏移量,通常为负数用于倒着定位文件指针。
返回值:
- 成功时返回0。
- 失败时返回非0值,并设置errno来表示错误类型。
代码演示:
//fseek函数
//在读文件时的运用,假设文件里是abcdefghi
#include<stdio.h>
int main()
{FILE* ps =fopen("data.txt","r");if (ps == NULL){perror("fopen");return 1;}//读文件int ch = fgetc(ps);printf("%c\n", ch);//a//打印g//fseek(ps, 6, SEEK_SET);//fseek(ps, -3, SEEK_END);fseek(ps, 5, SEEK_CUR);//这里因为,上面读取字符的时候光标向前//来到了a,所以偏移量是5ch = fgetc(ps);printf("%c\n", ch);//g//关闭文件fclose(ps);ps = NULL;return 0;
}
//fseek函数
//在写文件时运用
#include<stdio.h>
int main()
{FILE* ps = fopen("data.txt", "w");if (ps == NULL){perror("fopen");return 1;}//写文件fputs("abcdefghi", ps);//先写不然后面无法执行//把g修改成x,这里用fputs写完后光标在最后 fseek(ps, -3, SEEK_END);fputc('x', ps);//写'x'//关闭文件fclose(ps);ps = NULL;return 0;
}
6.2--ftell函数
1. long int ftell ( FILE * stream );
功能:返回文件指针相对于起始位置的偏移量
参数:stream:指向 FILE 类型结构体的指针,指定要操作的文件流,好获取该文件当前的指针位置。
返回值:
- 成功时,返回文件指针相对于文件开头的字节数
- 失败时,返回-1L,并设置errno来指示错误类型
代码演示:
//ftell函数
//我们来计算一下文件的字节数
#include<stdio.h>
int main()
{FILE* ps = fopen("data.txt", "w");if (ps == NULL){perror("fopen");return 1;}//写文件fputs("abcdefghi", ps);//先写不然后面无法执行//把g修改成x,这里用fputs写完后光标在最后 fseek(ps, -3, SEEK_END);fputc('x', ps);//让光标来到最后,再算相对起始位置的偏移量fseek(ps, 0, SEEK_END);int c = ftell(ps);printf("%d", c);//关闭文件fclose(ps);ps = NULL;return 0;
}
6.3--rewind函数
1. void rewind ( FILE * stream );
功能:让文件指针(光标)的位置回到起始位置,等效于fseek(ps, 0, SEEK_SET);
参数:stream:指向 FILE 类型结构体的指针,指定要操作的文件流,通过这个参数,rewind函数能够知道是要对那个文件进行操作,从而将该文件的文件指针移动到文件开头位置
代码演示:
//rewind函数
//返回指针起始位置等效于fseek(ps, 0, SEEK_SET);
#include<stdio.h>
int main()
{FILE* ps = fopen("data.txt", "w");if (ps == NULL){perror("fopen");return 1;}//写文件fputs("abcdefghi", ps);//先写不然后面无法执行//把g修改成x ,这里用fputs写完后光标在最后fseek(ps, -3, SEEK_END);fputc('x', ps);//让光标来到最后,再算相对起始位置的偏移量fseek(ps, 0, SEEK_END);int c = ftell(ps);printf("%d", c);//让文件指针回起始位置,把a改成q;rewind(ps);fputc('q', ps);//关闭文件fclose(ps);ps = NULL;return 0;
}
七.文件缓冲区

7.1--fflush函数
1. int fflush ( FILE * stream );
- 对输出流:将缓冲区中未写入的数据立即写入文件。
- 对输入流:行为由具体实现决定,非C语言标准行为(可能清空输入缓冲区)
- 参数为 NULL 时:刷新所有打开的输出流
参数: stream :指向文件流的指针(如 stdout 、文件指针等)
- 仅对输出流或更新流(最后⼀次操作为输出)有明确刷新行为
- 输入流的刷新行为不可移植(如清空输入缓冲区是非标准特性)
- 程序正常终止( exit )或调用 fclose 时会自动刷新,但程序崩溃时缓冲区数据可能丢失
代码演示:
//fflush
//冲刷缓冲区
#include <stdio.h>
#include <windows.h>
//VS2022 WIN11环境测试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语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件,如果不做,可能导致读写文件的问题。
八.更新文件
--在文件的打开模式中有三种方式值得注意,分别是:"r+","w+","a+",它们分别是啥意思呢?
行为 | "r+" | "w+" | "a+" |
解释 | 可读/可写 | 可读/可写 | 可读/可写 |
文件不存在时 | 打开失败 | 自动创建新文件 | 自动创建新文件 |
文件存在时 | 保留内容 | 清空内容 | 保留内容 |
初始文件指针位置 | 文件开头 | 文件开头 | 文件末尾 |
写入是否覆盖原有数据 | 是(可定位覆盖) | 是(内容已清空,从头写入) | 否(默认是在文件末尾写数据) |
典型用途 | 修改文件部分内容 | 创建新文件或完全重写旧文件 | 在文件末尾追加数据,比如记录日志 |
补充:"w"和"wb"这类的在文件存在时,也是先清空内容,再创建的新文件
关键要点:
- 在写完文件后,要继续读文件的时候,在读取之前一定要使用fflush()刷新文件缓冲区,或者使用fseek(),rewind()重新定位文件指示器的位置。
- 在读完文件后,需要继续写文件之前,使用fseek(),rewind()重新定位文件指示器的位置。
代码演示:
更新文件
int main()
{FILE* pf = fopen("test.txt", "w+");if (pf == NULL){perror("fopen");return 1;}//写文件fputs("abcdefghi", pf);fflush(pf);//刷新缓冲区//读文件//先回到初始位置fseek(pf, 0, SEEK_SET);//rewind(pf);也可以int ch = fgetc(pf);printf("%c\n", ch);//a//abcdefghi,把def改成xxx//上面读完一个后,光标来到a后面,也就是b前面//离d的偏移量是2;fseek(pf, 2, SEEK_CUR);fputs("xxx", pf);//abcxxxghifclose(pf);pf = NULL;return 0;
}
往期回顾:
【通关文件操作(上)】--文件的意义和概念,二进制文件和文本文件,文件的打开和关闭,文件的顺序读写
【C语言动态内存管理】--动态内存分配的意义,malloc和free,calloc和realloc,常见的动态内存的错误,动态内存经典笔试题分析,柔性数组,总结C/C++中程序内存区域划分
结语:本篇文章就到此结束了,继前面一篇文章后,在此篇文章中给大家分享了文件操作中的剩余部分,如文件的顺序读写(续),sprintf和sscanf函数,文件的随机读写,文件缓冲区,更新文件等知识点,后续会继续分享其它的内容,如果文章对你有帮助的话,欢迎评论,点赞,收藏加关注,感谢大家的支持。
相关文章:

【通关文件操作(下)】--文件的顺序读写(续),sprintf和sscanf函数,文件的随机读写,文件缓冲区,更新文件
目录 四.文件的顺序读写(续) 4.8--fwrite函数 4.9--fread函数 五.sprintf函数和sscanf函数 5.1--函数对比 5.2--sprintf函数 5.3--sscanf函数 六.文件的随机读写 6.1--fseek函数 6.2--ftell函数 6.3--rewind函数 七.文件缓冲区 7.1--fflush函数 八.更新文件 &…...

mysql的Memory引擎的深入了解
目录 1、Memory引擎介绍 2、Memory内存结构 3、内存表的锁 4、持久化 5、优缺点 6、应用 前言 Memory 存储引擎 是 MySQL 中一种高性能但非持久化的存储方案,适合临时数据存储和缓存场景。其核心优势在于极快的读写速度,需注意数据丢失风险和内存占…...
尚硅谷-尚庭公寓部署文档
文章目录 整合版部署文档部署架构图1. 项目目录结构增加注释的 Dockerfile 配置(1) 后端服务1 Dockerfile (backend/service1/Dockerfile)(2) 后端服务2 Dockerfile (backend/service2/Dockerfile) Dockerfile 配置说明重要注意事项3. Nginx 配置(1) 主配置文件 (nginx/nginx.c…...
使用函数证明给定的三个数是否能构成三角形
问题描述 给定三条边,请你判断一下能不能组成一个三角形。 输入数据第一行包含一个数M,接下有M行,每行一个实例,包含三个正数A,B,C。其中A,B,C <1000; 对于每个测试实例,如果三条边长A,B,C能组成三角形的话&#x…...

【数据结构】——二叉树堆(下)
一、堆中两个重要的算法 我们前面学习了树的概念和结构,还要树的一种特殊树--二叉树,然后我们学习了堆,知道了堆分为大堆和小堆,接下来我们就使用堆来进行一个排序。 在学习我们的堆排序前,我们先详细学习一下我们堆…...

t009-线上代驾管理系统
项目演示地址 摘 要 使用旧方法对线上代驾管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在线上代驾管理系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题…...
目标检测预测框置信度(Confidence Score)计算方式
预测框的置信度(Confidence Score)是目标检测模型输出的一个关键部分,它衡量了模型对一个预测框中包含特定类别对象的确定程度。 不同的目标检测模型(如Faster R-CNN、SSD、YOLO、DETR等)在计算置信度时有其特有的机制…...

【题解-洛谷】B4295 [蓝桥杯青少年组国赛 2022] 报数游戏
题目:B4295 [蓝桥杯青少年组国赛 2022] 报数游戏 题目描述 某班级男生人数为 X X X 人,女生人数为 Y Y Y 人,现全班同学围成一个圆圈,并按照顺时针方向为每名同学编号(从 1 1 1 到 X Y XY XY)。现给…...

Bootstrap项目 - 个人作品与成就展示网站
文章目录 前言一、项目整体概述1. 项目功能介绍1.1 导航栏1.2 首页模块1.3 关于我模块1.4 技能模块1.5 作品模块1.6 成就模块1.7 博客模块1.8 联系我模块 2. 技术选型说明 二、项目成果展示1. PC端展示1.1 首页1.2 关于我1.3 技能1.4 作品1.5 成就1.6 博客1.7 联系我 2. 移动端…...

新能源汽车霍尔线束介绍
新能源汽车作为传统燃油车的重要替代方案,其核心驱动系统依赖于高效、精准的电子控制技术。在这一体系中,霍尔线束作为关键传感器组件,承担着电机转速、位置信号的实时采集与传输任务,其性能直接影响整车动力输出的稳定性和能量利…...
2023网络应用专业-Python程序设计复习题目
2023技校网络应用专业-Python程序设计复习题目 须知: 个人信息要填写正确,在线答题时间不限,可以反复作答,次数不限,最后取最高分。 第一部分:单选题 1. 在Python交互模式下,输入下面代码: >>> “{0:.2f}”.format(12345.6789) 回车后显示的结果为: [单选…...
Termux可用中间人网络测试工具Xerosploit
Termux可用中间人网络测试工具Xerosploit。 Xerosploit 是一款基于 MITM 的本地网络渗透测试工具包。 食用方法: git clone https://github.com/LionSec/xerosploit cd xerosploit sudo python3 install.py 运行: sudo xerosploit 使用备注࿱…...

气镇阀是什么?
01、阀门介绍: 油封机械真空泵的压缩室上开一小孔,并装上调节阀,当打开阀并调节入气量,转子转到某一位置,空气就通过此孔掺入压缩室以降低压缩比,从而使大部分蒸汽不致凝结而和掺入的气体一起被排除泵外起此…...

SmolVLM2: The Smollest Video Model Ever(七)
编写测试代码与评价指标 现在的数据集里面只涉及tool的分类和手术phase的分类,所以编写的评价指标还是那些通用的,但是: predicted_labels:[The current surgical phase is CalotTriangleDissection, Grasper, Hook tool exists., The curre…...

RFID综合项目实训 | 基于C#的一卡通管理系统
目录 基于C#的一卡通管理系统 【实验目的】 【实验设备】 【实验内容】 【实验步骤】 实验准备 第一部分 界面布局设计 第二部分 添加串口通讯函数及高频标签操作功能函数(部分代码) 第五部分 实验运行效果 基于C#的一卡通管理系统 【实验目的】 熟悉 …...

mysql如何设置update时间字段自动更新?
之前在给网站做表设计的时候时间字段都是用的datetime类型,初始值都是设置的CURRENT_TIMESTAMP。 由于给文章表设计的有创建时间和更新时间两个字段,但是更新时间字段需要在更新文章后再次更新,当时由于不了解mysql还可以设置自动更新时间戳…...
数据库备份与恢复专业指南
数据库备份与恢复专业指南 一、备份与恢复核心概念 关键结论:数据库备份是数据安全的最后防线,恢复能力才是真正的备份有效性检验标准。 AI大模型专栏:https://duoke360.com/tutorial/path/ai-lm 1.1 备份类型 物理备份:直接复制数据库文件(如MySQL的.ibd文件、Oracle的.d…...

【第4章 图像与视频】4.5 操作图像的像素
文章目录 前言示例-获取和修改图像数据图像数据的遍历方式图像滤镜负片滤镜黑白滤镜浮雕滤镜filter滤镜属性 前言 getImageData() 与 putImageData() 这两个方法分别用来获取图像的像素信息,以及向图像中插入像素。与此同时,如果有需要,也可…...

Science Advances 上海理工大学与美国杜克大学(Duke University)共同开发了一种仿生复眼相机
编辑丨%科学家开发了一种 AI 辅助的仿生复眼相机。炎炎夏日,相信各位读者都有被蚊子骚扰过的恼火记忆。但往往想要清剿蚊子的时候,却被它灵巧地躲开,再难找到。诸如蚊子这种节肢动物的视觉系统已经进化了 5 亿多年,从寒武纪一直到…...

正点原子Z20 ZYNQ 开发板发布!板载FMC LPC、LVDS LCD和WIFI蓝牙等接口,资料丰富!
正点原子Z20 ZYNQ 开发板发布!板载FMC LPC、LVDS LCD和WIFI&蓝牙等接口,资料丰富! 正点原子新品Z20 ZYNQ开发板来啦!核心板全工业级设计,主控芯片型号是XC7Z020CLG484-2I。开发板由核心板底板组成&…...

软件测评中心如何确保软件品质?需求分析与测试计划很关键
软件测评中心承担着对软件进行评估、测试和审查的任务,它有一套规范的流程来确保软件的品质,并且能够向客户和开发者提供详实的软件状况分析报告。 需求分析环节 这一环节至关重要,必须与客户和开发团队保持密切交流。我们需要从他们那里精…...
004 flutter基础 初始文件讲解(3)
之前,我们正向的学习了一些flutter的基础,如MaterialApp,Scaffold之类的东西,那么接下来,我们将正式接触原代码: import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyAp…...

2025LitCTF 复现
easy_file 登录界面 尝试admin 和密码1 没成功 结果尝试了弱口令 admin 用户和 password 密码就登录成功了 文件上传 新建一个空的 新建木马.txt 文件发现上传成功 然后写入一句话木马 <?php eval($_POST[a]); ?> 上传失败 说明可能是有字符被过滤了,猜…...
英语中最难学的部分是时态
英语中最难学的部分是时态。英语的时态体系包含16种时态,每种时态都有其独特的用法和规则,这使得时态成为英语学习中的一个难点 。 时态的定义和分类 时态可以分为时间和体态两个维度: 时间:现在时、过去时、将来时、过…...
Python 如何让自动驾驶的“眼睛”和“大脑”真正融合?——传感器数据融合的关键技术解析
Python 如何让自动驾驶的“眼睛”和“大脑”真正融合?——传感器数据融合的关键技术解析 自动驾驶技术从来都不是“单兵作战”。如果你细看一辆自动驾驶汽车,它其实是一个传感器的集合体:摄像头、激光雷达(LiDAR)、毫米波雷达、超声波传感器、GPS……这些传感器各自发挥作…...

使用C# 快速删除Excel表格中的重复行数据-详解
目录 简介 使用工具 C# 删除Excel工作表中的重复行 C# 删除指定Excel单元格区域中的重复行 C# 基于特定列删除重复行 RemoveDuplicates 方法快速比较 简介 重复行是指在Excel表格中完全相同的多行数据。这些冗余行的存在可能源于多种原因,例如: …...

WPF-Prism学习笔记之 “导航功能和依赖注入“
新建空白模板(Prism) 新建好后会有自动创建ViewModels和Views 在"MainWindow.xaml"文件里面标题去绑定了一个属性"Title",而"MainWindowViewModel.cs"里面继承一个非常重要的"BindbleBase"(prism框架里面非常重要的)。所以…...

中国城市间地理距离矩阵(2024)
1825 中国城市间地理距离矩阵(2024) 数据简介 中国城市间地理距离矩阵数据集,通过审图号GS(2024)0650的中国城市地图在Albers投影坐标系中进行计算得出矩阵表格,单位为KM,方便大家研究使用。 中国城市地理距离矩阵数据通过计算城市中心距离…...
【孙悟空喝水】2022-2-7
缘由C编程问题求解:9634: 孙悟空喝水-编程语言-CSDN问答 void 孙悟空喝水() {//缘由https://ask.csdn.net/questions/7639865?spm1005.2025.3001.5141int x 2, n 0; double s 0, ss 0;std::cin >> n;while ((int)s < n)s 1.0 / x, ss (x - 1.0) / …...
`sysctl`命令深度剖析:如何优化内核参数以提升服务器网络/IO性能?
更多服务器知识,尽在hostol.com 嘿,各位Linux服务器的“老司机”和“赛车手”们!咱们把服务器比作一辆高性能跑车,日常跑起来是很快,但你有没有想过,这辆“跑车”出厂时的默认设置,可能只是为了…...