【C/C++】用C语言写一个数据仓库,存储和修改数据
这个代码实现了一个简单的数据仓库,其中数据被存储在一个3x3的二维数组中。用户可以通过控制台界面与这个数据仓库进行交互,可以选择查看数据或者修改数据。
基础版源码:
#include <stdio.h>#define HOUSESIZE 3
int arr[HOUSESIZE][HOUSESIZE] = { 0 }; // 初始化所有元素为0void printHouseData() {for (int x = 0; x < HOUSESIZE; x++) {for (int y = 0; y < HOUSESIZE; y++) {printf("%d ", arr[x][y]);}printf("\n");}
}void changeHouseData(int row, int column, int value) {if (row >= 1 && row <= HOUSESIZE && column >= 1 && column <= HOUSESIZE) {arr[row - 1][column - 1] = value;}else {printf("输入的行列值超出范围!\n");}
}int main() {printf("欢迎使用数据仓库\n");printf("请选择功能:\n");printf("1.查看数据仓库\n");printf("2.修改数据仓库数据\n");printf("输入0退出程序\n");int userinput;while (1) {scanf("%d", &userinput);if (userinput == 0) {break; // 允许用户通过输入0来退出程序}switch (userinput) {case 1:printHouseData();break;case 2:int row, column, value;printf("请输入你要改变数据的行、列、值(用空格分隔):\n");if (scanf("%d %d %d", &row, &column, &value) != 3) {printf("输入错误,请重新输入!\n");continue; // 输入错误时跳过本次循环,重新提示用户输入}changeHouseData(row, column, value);break;default:printf("输入错误,请重新选择功能!\n");break;}}return 0;
}
这个程序只是一个比较简单的部分:
不能实现数据永久存储,程序后数据就没了造成。
如果想做成可以永久存储数据的仓库则需要加一个函数能够使它以txtxtxt形式存储到系统当中。
每次程序运行后都会读取数据。
升级版源码:
#include <stdio.h>// ... 其他代码保持不变 ...void saveHouseDataToFile(const char* filename) {
FILE* file = fopen(filename, "w"); // 打开文件进行写入
if (file == NULL) {
perror("Error opening file");
return;
}for (int x = 0; x < HOUSESIZE; x++) {
for (int y = 0; y < HOUSESIZE; y++) {
fprintf(file, "%d ", arr[x][y]); // 将每个元素写入文件
}
fprintf(file, "\n"); // 每行结束后写入换行符
}fclose(file); // 关闭文件
}// ... 其他代码保持不变 ...int main() {
// ... 其他代码保持不变 ...// 假设我们想在程序结束时保存数据到文件
saveHouseDataToFile("house_data.txt");return 0;
}
从文件读取数据
接下来,您需要添加一个函数来从文件中读取数据并初始化 arr
数组。这可以通过使用 fscanf
函数来实现。
#include <stdio.h>// ... 其他代码保持不变 ...void loadHouseDataFromFile(const char* filename) {
FILE* file = fopen(filename, "r"); // 打开文件进行读取
if (file == NULL) {
perror("Error opening file");
return;
}for (int x = 0; x < HOUSESIZE; x++) {
for (int y = 0; y < HOUSESIZE; y++) {
if (fscanf(file, "%d", &arr[x][y]) != 1) {
perror("Error reading file");
fclose(file);
return;
}
}
}fclose(file); // 关闭文件
}int main() {
// 在程序开始时从文件加载数据
loadHouseDataFromFile("house_data.txt");// ... 其他代码保持不变 ...return 0;
}
注意事项
-
错误处理:在实际应用中,您需要更详细地处理文件操作可能发生的错误。上面的示例代码只是简单地打印了错误信息,但在生产环境中,您可能需要更复杂的错误处理逻辑。
-
文件路径:确保您知道文件将保存在哪里,以及程序有权限在那里读写文件。
-
数据完整性:如果文件中的数据不完整或格式不正确,加载数据的过程可能会失败。您应该添加适当的检查来确保数据的完整性。
-
文件格式:上面的示例使用纯文本格式存储数据,这对于简单的程序可能足够了。但对于更复杂的应用程序,您可能需要使用更复杂的文件格式或序列化技术,如JSON、XML或二进制格式。
-
安全性:当处理文件时,安全性是一个重要的考虑因素。确保您的程序不会受到恶意文件或意外输入的影响。
这个程序也可以使用Java来写
java源码:
import java.util.Scanner;public class HouseData {private static final int HOUSESIZE = 3;private static int[][] arr = new int[HOUSESIZE][HOUSESIZE]; // 初始化所有元素为0public static void printHouseData() {for (int x = 0; x < HOUSESIZE; x++) {for (int y = 0; y < HOUSESIZE; y++) {System.out.print(arr[x][y] + " ");}System.out.println();}}public static void changeHouseData(int row, int column, int value) {if (row >= 1 && row <= HOUSESIZE && column >= 1 && column <= HOUSESIZE) {arr[row - 1][column - 1] = value;} else {System.out.println("输入的行列值超出范围!");}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("欢迎使用数据仓库");System.out.println("请选择功能:");System.out.println("1.查看数据仓库");System.out.println("2.修改数据仓库数据");System.out.println("输入0退出程序");int userInput;while (true) {userInput = scanner.nextInt();if (userInput == 0) {break; // 允许用户通过输入0来退出程序}switch (userInput) {case 1:printHouseData();break;case 2:System.out.println("请输入你要改变数据的行、列、值(用空格分隔):");int row = scanner.nextInt();int column = scanner.nextInt();int value = scanner.nextInt();changeHouseData(row, column, value);break;default:System.out.println("输入错误,请重新选择功能!");break;}}scanner.close();}
}
相关文章:
【C/C++】用C语言写一个数据仓库,存储和修改数据
这个代码实现了一个简单的数据仓库,其中数据被存储在一个3x3的二维数组中。用户可以通过控制台界面与这个数据仓库进行交互,可以选择查看数据或者修改数据。 基础版源码: #include <stdio.h>#define HOUSESIZE 3 int arr[HOUSESIZE][…...
YOLO v5与YOLO v8框图比较
1. 介绍 YOLO (You Only Look Once) 是一个用于目标检测的卷积神经网络模型,以其高精度、高速度和易用性著称。YOLO v5 是目前最流行的 YOLO 版本之一,而 YOLO v8 是 YOLO 的最新版本。 2. 原理详解 YOLO 系列模型的基本原理是将目标检测任务转化为图…...
Redis集群(5)
集群原理 节点通信 通信流程 在分布式存储系统中,维护节点元数据(如节点负责的数据、节点的故障状态等)是关键任务。常见的元数据维护方式分为集中式和P2P方式。Redis集群采用P2P的Gossip协议,这种协议的工作原理是节点之间不断…...
STM32H5 DAC 配置
STM32 H5 DAC的详细初始化过程可以分为以下几个步骤,以下是根据参考文章和相关资料整理的具体步骤和参数设置: 1、使能相关时钟: 使能GPIOA(或其他对应DAC输出引脚的GPIO端口)的时钟。这通常是通过调用RCC_APB2Perip…...
第十九节:暴力递归到动态规划
一 动画规划的概念 优化出现重复解的递归 一旦写出递归来,改动态规划就很快 尝试策略和状态转移方程是一码事 学会尝试是攻克动态规划最本质的能力 如果你发现你有重复调用的过程,动态规划在算过一次之后把答案记下来,下回在越到重复调用过程…...
服务器部署spring项目jar包使用bat文件,省略每次输入java -jar了
echo off set pathC:\Program Files\Java\jre1.8.0_191\bin START "YiXiangZhengHe-8516" "%path%/java" -Xdebug -jar -Dspring.profiles.activeprod -Dserver.port8516 YiXiangZhengHe-0.0.1-SNAPSHOT.jar 将set path后面改成jre的bin文件夹 START 后…...
2024备忘知识点
1. adb shell dumpsys package f |grep fin 过滤查找指纹服务 1. adsp write /sys/kernel/boot_adsp/boot 1 Please change replace dev_dbg into dev_err in kernel file adsp-loader.c. Then check whether "write /sys/kernel/boot_adsp/…...
JS基础与高级应用: 性能优化
在现代Web开发中,性能优化已成为前端工程师必须掌握的核心技能之一。本文从URL输入到页面加载完成的全过程出发,深入分析了HTTP协议的演进、域名解析、代码层面性能优化以及编译与渲染的最佳实践。通过节流、防抖、重复请求合并等具体技术手段࿰…...
Python | Leetcode Python题解之第145题二叉树的后序遍历
题目: 题解: class Solution:def postorderTraversal(self, root: TreeNode) -> List[int]:def addPath(node: TreeNode):count 0while node:count 1res.append(node.val)node node.righti, j len(res) - count, len(res) - 1while i < j:res…...
公司面试题总结(二)
7. 说说 JavaScript 中的数据类型?存储上的差别? • 基本类型: o Number o String o Boolean o Undefined o null o symbol • 引用类型 o Object o Array o Function • 声明变量时不同的内存地址分配: o 简单类型的…...
人脸识别和 ArcFace:用于深度人脸识别的附加角边际损失
在本文中,您将发现一种 ArcFace 方法,该方法可获得用于人脸识别的高分辨特征。阅读本文后,你将了解: 人脸识别任务如何工作。如何计算人脸匹配。SoftMax 和 ArcFace 的直观区别。ArcFace 的几何解释。ArcFace 背后的数学原理本文假定您已经熟悉用于多类分类、检测和 SoftMax…...
双标引领:汽车软件安全的ASPICE与ISO21434之道
随着汽车行业的飞速发展,尤其是智能化、网联化趋势的加剧,汽车软件开发的复杂性和安全性需求日益提升。在这样的背景下,ASPICE标准和ISO21434安全标准应运而生,为汽车软件的开发和管理提供了坚实的支撑。 ASPICE(Auto…...
再度牵手,制造升级 | 毅达科技IMS OS+通用产品集+行业套件项目正式启动!
在数字化与智能制造的浪潮中,制造业企业纷纷加快转型步伐,力求通过技术创新实现生产效率与质量的双重提升。近日,广东毅达医疗科技股份有限公司(以下简称“毅达科技”)再次携手盘古信息,正式启动了IMS 数字…...
大疆智图_空三二维重建成果传输
一、软件环境 1.1 所需软件 1、 大疆智图:点击下载; 2、 ArcGIS Pro 3.1.5:点击下载,建议使用IDM或Aria2等多线程下载器; 3、 IDM下载器:点击下载,或自行搜索; 4、 Fas…...
python实现无人机航拍图片像素坐标转世界坐标
背景 已知相机参数(传感器宽度和高度、图像宽度和高度、焦距、相对航高、像主点坐标 ),在给定像素坐标的前提下,求世界坐标,大部分通过AI来实现,不知道哪个步骤有问题,望大家指正 脚本 impor…...
C#面:什么是 Windows 服务,它的生命周期与标准的 EXE 程序有什么不同
C#中的Windows服务是一种在后台运行的长时间运行的应用程序,它可以在Windows操作系统启动时自动启动,并在系统运行期间持续运行。与标准的EXE程序相比,Windows服务具有以下不同之处: 生命周期:Windows服务的生命周期与…...
Java基础面试题自测
文章目录 一、Java 中有哪 8 种基本数据类型?说说这 8 种基本数据类型对应的包装类型?二、包装类型的常量池技术了解么?三、为什么要有包装类型?四、什么是自动拆装箱?原理?四、遇到过自动拆箱引发的 NPE 问…...
【LeetCode 第 401 场周赛】K秒后第 N 个元素的值
文章目录 1. K秒后第 N 个元素的值🆗 1. K秒后第 N 个元素的值🆗 题目链接🔗 🐧解题思路: 前缀和 小规律🍎 🍎 从上图观察可知,规律一目了然,arr[i] arr[i] 对上一…...
游戏心理学Day10
习得性动机。 习得性动机也称社会性动机是指人与社会生活相联系的后天习得的动机,这类动机比原发性动机要多很多。 成就动机。 成就动机是指个人追求进步以及达到目标的内在动力。 在游戏中设计师总会担心过多的失败,会令玩家感到挫败进而离开游戏 对…...
MySQL表设计经验汇总篇
文章目录 1、命名规范2、选择合适的字段类型3、主键设计要合理4、选择合适的字段长度5、优先考虑逻辑删除,而不是物理删除6、每个表都需要添加通用字段7、一张表的字段不宜过多8、定义字段尽可能not null9、合理添加索引10、通过业务字段冗余来减少表关联11、避免使…...
Servlet基础(续集2)
HttpServletResponse web服务器接收到客户端的http的请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse 如果要获取客户端请求过来的参数:找HttpServletRequest如果要给客户端…...
【云原生】创建harbor私有仓库及使用aliyun个人仓库
1.安装docker #删除已有dockersystemctl stop docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine #安装docker yum install -y docker-ce-20.10.1…...
什么是SOLIDWORKS科研版
随着科技的不断进步,工程设计和科学研究变得越来越复杂,需要更强大的工具来满足需求。SOLIDWORKS科研版就是在这样的背景下诞生的,它为科研人员和工程师提供了一套全方面、快捷的解决方案,以应对各种科研和工程挑战。 SOLIDWORKS科…...
微信小程序页面配置
页面配置 小程序的配置可以配置页面路径、窗口表现、tabBar等,分为全局配置和页面配置,全局配置针对所有页面生效,页面配置只针对当前页生效。 全局配置 (app.json) (1) 路径配置 pages 配置页面路径,未配置路径的页面无法被访…...
如何将JPG/PNG位图免费快速一键转换成SVG格式的矢量图
环境: JPG/PNG位图 问题描述: 如何将JPG/PNG位图快速一键转换成SVG格式的矢量图 解决方案: 是一个人工智能驱动的图片转换工具,可以帮助用户将」JPG/PNG位图快速转换成SVG格式的矢量图,方便设计人员对图片进行二次…...
YOLO检测环境安装配置
YOLO介绍 YOLO学习手册:YOLO教程 YOLO [ˈjoʊloʊ](You Only Look Once)是一种快速而准确的目标检测算法,由Joseph Redmon等人在2016年提出。YOLO被广泛应用于计算机视觉领域,包括实时视频分析、自动驾驶、安防监控、…...
NOSQL -- ES
第三个我们比较常用的NOSQL类型的数据库 --- ES 介绍: ES的全称(Elasticsearch) ES是一个分布式全文搜索的引擎 也就是我们平常在购物, 搜索东西的时候常用的, 就是一个ES的类型, 分布式全文搜索引擎 查询原理: 1>分词: 在查询之前, 其会将一些数据拆分开, 按照词进行拆分…...
【Python基础】名称空间和作用域
1.名称空间 将栈区进行分类,这些分类就是名称空间 名称空间存放什么名字空间个数何时创建&销毁内置名称空间built-inPython解释器内置的名字1个Python解释器启动&解释器关闭 全局名称空间 global Python文件内定义的类名,变量名,模块…...
安全智能预警软件有人试图窃取会立即发出高分贝警报已解锁VIP功能
一款手机安全智能预警软件,无论是网吧还是餐馆小聚,您的手机都能得到贴心的守护,一旦有人试图窃取,应用会立即发出高分贝警报,确保您在公交、地铁、商场等拥挤环境中依然能牢牢掌控手机。(解锁专业版&#…...
DeepSORT(目标跟踪算法)中自由度决定卡方分布的形状
DeepSORT(目标跟踪算法)中自由度决定卡方分布的形状 flyfish 重要的两个点 自由度决定卡方分布的形状(本文) 马氏距离的平方在多维正态分布下服从自由度为 k 的卡方分布 独立的信息 在统计学中,独立的信息是指数据…...
徐州建设工程交易网站质量监督/温州免费建站模板
《CLR Via C#》这本书以前就粗略看过两遍,但一直都没能深入理解,而且很多内容也忘记了,现在准备重新看一遍,并将看过的部分写出来,因为写的过程也是一个加深理解的过程。本系列算是学习的一个记录吧,也可以…...
国外 网站 欣赏/公司网站建设流程
写在前面 很多小伙伴留言说让我写一些工作过程中的真实案例,写些啥呢?想来想去,写一篇我在以前公司从零开始到用户超千万的数据库架构升级演变的过程吧。 本文记录了我之前初到一家创业公司,从零开始到用户超千万,系统…...
免费咨询健康/seo技术博客
一、数据概况 今天分享一份西北地区的POI数据,包含陕西省、甘肃省、青海省、宁夏回族自治区、新疆维吾尔自治区5个省级行政单位。 数据时间为2022年11月,坐标系是GCJ-02。 获取方式在文末,有兴趣的小伙伴自取。 陕西省POI数据可视化西安市…...
今天国内重大新闻事件/重庆seo搜索引擎优化优与略
一、数据与文字的表示方法 (1) 数据格式 (1) 定点数的表示方法 假设用一个 n+1 位的字来表示一个定点数 x,xn 放在最左位置,并用数值 0 和 1 分别代表正号和负号,其余位数代表它的量值,小数点…...
室内设计效果图欧式风格/seo免费自学的网站
输出重定向 > 重定向正确输出2> 重定向错误输出&> 重定向全部 重定向正确输入到file 重定向错误输入到file.err 重定向全部输入到file.all 重定向会覆盖掉原来的内容可以使用输出追加:把>改成>> 管道的应用 "|"管道的作用是将一条命令的…...
扁平化设计网站欣赏/网络营销形式
C20(C 编程语言标准2020版)将是C 语言一次非常重大的更新,将为这门语言引入大量新特性。c20标准文档是官方目前最新文件,更新2020年。需要的朋友可下载试试!此次更新看 C20 的 Big Four(四大新特性:概念、范围、协程和模块)以及核…...