c语言代码运行不成功,如何解决?

news2024/9/9 0:19:45

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

问题描述

  c语言代码运行不成功 某航空公司飞机购票模拟系统(服务器端)目前来看数据读取和存储出了问题 希望可以帮忙修改代码运行成功。

https://blog.csdn.net/2301_80123071/article/details/140338022

内容:
文件信息:
航线信息:航线编码、起点、终点、公里数、飞行时间。
航班信息:航班编号、航线编码、起飞时间、可售机票总数、票价、当前状态(准备、已出票、售完、已结束)。
售票信息:航班编号、顾客ID、顾客姓名、购票时间(y-m-d-h-m-s)。
设计程序能实现以下航空公司服务器端功能:
(1)航线的维护(创建、修改(按航线编号)、删除(按航线编号,不能删除已出票、售完航班))
(2) 航班的维护(创建、修改(按航班编号)、删除(按航班编号,不能删除已出票、售完航班))。
(3)显示航班列表。
(4)显示指定航班的售票情况(明细和统计值)。
(5)显示各航班的销售情况。
(6)按起飞时间对航班信息进行升序排序。
(7)保存:数据永久性存放至外存。
(8)读取:将存放于外存的数据读入内存继续操作。

友情提示:
  如上问题有的来自我自身项目开发,有的收集网站,有的来自读者…如有侵权,立马删除。再者,针对此专栏中部分问题及其问题的解答思路或步骤等,存在少部分搜集于全网社区及人工智能问答等渠道,若最后实在是没能帮助到你,还望见谅!并非所有的解答都能解决每个人的问题,在此希望屏幕前的你能够给予宝贵的理解,而不是立刻指责或者抱怨!如果你有更优解,那建议你出教程写方案,一同学习!共同进步。

解决方案

  如下是上述问题的解决方案,仅供参考:

  根据您提供的代码和描述,您的C语言程序是一个航空公司飞机购票模拟系统,目前存在数据读取和存储的问题。以下是一些可能的问题和建议的解决方法:

  1. 文件打开模式
    saveDataloadData 函数中,您使用 fopen 时的模式可能不正确。例如,在 loadData 中,您使用 "all_data.txt" 作为文件名,但没有指定模式。通常,如果您要读取和写入二进制数据,应使用 "wb"(写入)和 "rb"(读取)模式。

  2. 数据写入和读取
    您的 saveData 函数中使用 fwrite 直接写入结构体数据,这是正确的。但在 loadData 函数中,您似乎尝试以文本方式读取数据,这可能不匹配您写入时的格式。如果使用 fwrite 写入,应使用 fread 读取。

  3. 时间字符串转换
    loadData 中,您使用 sscanf 来解析时间字符串,但未提供正确的格式字符串。例如,对于 tempFlight.departure_time,您应该使用与 stringToTime 函数中相应的 sscanf 格式。

  4. 内存分配
    loadData 函数中,当创建新节点时,您需要确保为新读取的数据分配内存。例如,newNode = createNodeWithRoute(tempRoute); 应该在读取数据后立即创建。

  5. 链表操作
    loadData 函数中,您需要确保正确地将新读取的节点添加到链表中。您可能需要在链表末尾添加节点,而不是在链表的开始。

  6. 错误处理
    fopen 失败时,您应该添加适当的错误处理代码,比如打印错误消息并退出程序。

  7. 调试
    使用 printf 或其他调试工具来检查程序在运行过程中的状态,特别是文件读写和链表操作部分。

  8. 代码风格
    您的代码中存在一些风格问题,比如在 loadData 函数中 isRouteisFlightisTicket 变量的使用,这可能会引起逻辑上的混淆。

以下是修改后的 loadData 函数示例,假设您使用二进制方式读写数据:

void loadData(const char *filename, Node **routes, Node **flights, Node **tickets) {
    FILE *file = fopen(filename, "rb");
    if (file == NULL) {
        perror("无法打开文件");
        return;
    }
    // 读取数据到链表
    while (!feof(file)) {
        DataType type;
        size_t read_count = fread(&type, sizeof(DataType), 1, file);
        if (read_count == 0) break; // 检查是否到达文件末尾

        switch (type) {
            case ROUTE_DATA:
            {
                Route tempRoute;
                read_count = fread(&tempRoute, sizeof(Route), 1, file);
                if (read_count == 1) {
                    *routes = createNodeWithRoute(tempRoute);
                    addNodeToLinkedList(routes, *routes);
                }
                break;
            }
            case FLIGHT_DATA:
            {
                Flight tempFlight;
                read_count = fread(&tempFlight, sizeof(Flight), 1, file);
                if (read_count == 1) {
                    *flights = createNodeWithFlight(tempFlight);
                    addNodeToLinkedList(flights, *flights);
                }
                break;
            }
            case TICKET_DATA:
            {
                Ticket tempTicket;
                read_count = fread(&tempTicket, sizeof(Ticket), 1, file);
                if (read_count == 1) {
                    *tickets = createNodeWithTicket(tempTicket);
                    addNodeToLinkedList(tickets, *tickets);
                }
                break;
            }
        }
    }
    fclose(file);
    printf("数据加载成功。\n");
}

  请注意,这只是一个示例,您可能需要根据实际的数据结构和逻辑进行调整。希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更详细的错误信息或描述,以便进一步分析。

  希望如上措施及解决方案能够帮到有需要的你。

  PS:如若遇到采纳如下方案还是未解决的同学,希望不要抱怨&&急躁,毕竟影响因素众多,我写出来也是希望能够尽最大努力帮助到同类似问题的小伙伴,即把你未解决或者产生新Bug黏贴在评论区,我们大家一起来努力,一起帮你看看,可以不咯。

  若有对当前Bug有与如下提供的方法不一致,有个不情之请,希望你能把你的新思路或新方法分享到评论区,一起学习,目的就是帮助更多所需要的同学,正所谓「赠人玫瑰,手留余香」。

☀️写在最后

  ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏《CSDN问答解惑-专业版》,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。

码字不易,如果这篇文章对你有所帮助,帮忙给 bug菌 来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿哇。


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

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

相关文章

GEE数据:Sentinel-2数据更新新增两个云和雪波段(MSK_CLDPRB和MSK_SNWPRB)

目录 简介 数据时间 数据提供者 Collection Snippet 波段名称 Class Table: SCL 影像属性 代码 结果 简介 2022年1月25日之后,PROCESSING_BASELINE为“04.00”或以上的Sentinel-2场景的DN(值)范围移动了1000。HARMONIZED集合将新场…

【C++】std::shared_ptr智能指针详解和示例

在C中,智能指针是一种用于自动管理动态分配内存的机制,旨在减少内存泄漏和野指针的风险。std::shared_ptr 是C标准库提供的几种智能指针之一,它通过共享所有权的机制来管理动态分配的对象。本文将详细解析 std::shared_ptr 的工作原理、特性&…

【电路笔记】-共源JFET放大器

共源JFET放大器 文章目录 共源JFET放大器1、概述2、共源JFET放大器3、JFET放大器电流和功率增益共源JFET放大器使用结场效应晶体管作为其主要有源器件,提供高输入阻抗特性。 1、概述 普通源JFET放大器与共射极BJT放大器相比有一个重要优点,即FET具有极高的输入阻抗,再加上低…

工业三防平板,高效能与轻便性的结合

在当今数字化、智能化的工业时代,工业三防平板作为一种创新的设备,正以其独特的优势在各个领域发挥着重要作用。它不仅具备高效能的处理能力,还拥有出色的轻便性,为工业生产和管理带来了前所未有的便利。 一、高效能的核心动力 工…

2024年中职云计算实验室建设及云计算实训平台整体解决方案

随着信息技术的飞速发展,云计算作为新一代信息技术的核心,正逐步渗透到各行各业,成为推动数字化转型的重要力量。为了适应这一趋势,中职教育作为技能型人才培养的重要阵地,亟需加强云计算实验室建设与云计算实训平台的…

web,apache,nginx

web基本概念和常识 Web:为用户提供的一种在互联网上浏览信息的服务,Web 服务 是动态的、可交 互的、跨平台的和图形化的。 Web 服务为用户提供各种互联网服务,这些服务包括信息浏览服务,以及各种交互式服务,包括聊天、购物、学习…

泰迪智能科技大数据实验室——陕西省高校合作成功案例

近年来,陕西省紧跟国家大数据发展战略,积极推进大数据产业发展。在政策扶持、产业布局、技术创新等方面取得显著成效。泰迪智能科技大数据实验室立足陕西,携手西安邮电大学、西安财经大学、陕西科技大学镐京学院、宝鸡文理学院、渭南师范学院…

编译期链接时共享库搜索路径优先级实验

编译期链接时共享库搜索路径优先级实验 前言实验环境目录说明准备工作单独测试不配置路径默认路径LIBRARY_PATH-L 优先级测试默认路径和LIBRARY_PATH-L和默认路径 DEBUG模式编译器配置详细信息链接器详细信息DEBUG总结验证 默认路径>LIBRARY_PATH原因附录库文件源码主程序源…

bugku-web-ctf-变量1

<?php error_reporting(0); include "flag1.php"; highlight_file(__file__); if(isset($_GET[args])){$args $_GET[args];if(!preg_match("/^\w$/",$args)){die("args error!");}eval("var_dump($$args);"); } ?> error_r…

Apache、nginx

一、Web 1、概述 Web&#xff1a;为⽤户提供的⼀种在互联⽹上浏览信息的服务&#xff0c;Web 服务是动态的、可交互的、跨平台的和图形化的。 Web 服务为⽤户提供各种互联⽹服务&#xff0c;这些服务包括信息浏览服务&#xff0c;以及各种交互式服务&#xff0c;包括聊天、购物…

React基础知识 精简全面 推荐

这篇博文主要对一些刚入门react框架的同学&#xff0c;以及对react基本知识进行巩固的&#xff0c;最后就是精简一下基本知识&#xff0c;以方便自己查看&#xff0c;感谢参考&#xff0c;有问题评论区交流&#xff0c;谢谢。 目录 1.JSX 2.Props 和 State 3.组件生命周期…

“八股文”在实际工作中是助力、阻力还是空谈?

程序员面试中的“八股文”&#xff1a;助力、阻力还是空谈&#xff1f; 在当前的技术行业&#xff0c;程序员的招聘面试过程中频繁出现对“八股文”的考核。“八股文”通常指的是关于编程知识的标准化回答&#xff0c;这些问题在网络上大量流传&#xff0c;并被求职者反复背诵…

Socket通信(C++)

文章目录 什么是SocketSocket通信过程C Socket通信APIint socket(int domain, int type, int protocol);int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);struct sockaddrstruct sockaddr_unstruct sockaddr_in / struct sockaddr_in6 int connect(int …

IP Fabric三层路由

IP Fabric指的是在IP网络基础上建立起来的Overlay隧道技术。即为基于胖树的SpineLeaf拓扑结构的IP Fabric组网图。 在这种组网方式中&#xff0c;任何两台服务器间的通信不超过3台设备&#xff0c;每个Spine和Leaf节点全互连&#xff0c;可以方便地通过扩展Spine节点来实现网络…

Godot学习笔记6——数组和for

一、定义一个数组 在Godot中&#xff0c;定义一个数组的关键字也是“var”&#xff0c;数组里面的内容使用方括号括起来。在没有限定类型时&#xff0c;我们可以放入任何类型的数据&#xff1a; 我们甚至可以将另一个数组放入此数组中&#xff1a; 和其他类型的变量类似&#…

【数据结构】包装类泛型

1.包装类 在 Java 中&#xff0c;由于基本类型不是继承自 Object &#xff0c;为了在泛型代码中可以支持基本类型&#xff0c; Java 给每个基本类型都对应了 一个包装类型。 1.1.基本的数据类型对应的包装类 1.2装箱和拆箱 //装箱int a10;Integer cInteger.valueOf(a);System.…

鸿蒙应用框架开发【简单时钟】 UI框架

简单时钟 介绍 本示例通过使用ohos.display接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 使用说明 1.界面通过setInterval实现周期性实时刷新时间&#xff0c;使用Canvas绘制时钟&#xff0c;指针旋转角度通过计算得出。 例如&#xff1a;"2 * Math.PI / …

Synchronized的锁升级过程是怎样的?

文章目录 一、Synchronized的使用1、修饰实例方法2、修饰静态方法3、修饰代码块4、总结&#xff1a; 二、Monitor1、Java对象头1.1 32 位虚拟机的对象头1.2 64位虚拟机的对象头 2、Mark Word 结构3、Moniter4、Synchronized 字节码5、轻量级锁6、锁膨胀7、自旋优化8、偏向锁9、…

Python for循环迭代原理(迭代器 Iterator)

在使用Python时&#xff0c;我们经常会使用for循环来访问容器对象&#xff08;列表、字符、字典等&#xff09;中的元素。其幕后实际是通过迭代协议来完成的&#xff0c;迭代是一种依次访问对象中元素的方式&#xff0c;for循环在对象上调用iter()函数生成一个迭代器&#xff0…

从后端开发视角认识向量数据库

以ChatGPT为代表的大语言模型应用自问世以来已经火了好几年。在这期间国内外类似产品层出不穷&#xff0c;甚至公司内部团队都开发了好几个AI小助手。刚好最近看了几篇关于大语言模型应用开发的文章&#xff0c;借此了解了一下应用层面的基本知识&#xff0c;也算是接触到了大语…