HJ19 简单错误记录

问题概要

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
对应牛客网题目HJ19 简单错误记录

思路分析

其实这个题目并没有用到特别复杂的技巧,重点是对字符串的处理,以及模拟整个记录的过程。

代码实现

#include <stdio.h>
#include <string.h>#define MAX_ERROR_RECORDS 100
#define MAX_FILENAME_LENGTH 17// 定义错误记录结构体
typedef struct {char filename[MAX_FILENAME_LENGTH]; // 存储文件名的后16个字符int line_number; // 存储行号int cnt; // 存储错误次数
} ErrorRecord;int main() {char in_str[200];int num;int head = 0;ErrorRecord list[MAX_ERROR_RECORDS];memset(list, 0, sizeof(list));while (scanf("%s %d", in_str, &num) != EOF) {char* p = strrchr(in_str, '\\'); // 找到最后一个斜杠if (p == NULL) {p = in_str; // 如果没有斜杠,即文件名即为整个输入字符串} else {++p; // 移动指针,跳过斜杠// 如果存在盘符,则跳过盘符和冒号if (p[1] == ':') {p += 2;}}int len = strlen(p);strncpy(list[head].filename,len > 16 ? p + len - 16 : p,MAX_FILENAME_LENGTH - 1);list[head].filename[MAX_FILENAME_LENGTH - 1] ='\0'; //确保文件名称字符串的结束符list[head].line_number = num;int found = 0;for (int i = 0; i < head; ++i) {if (strcmp(list[i].filename, list[head].filename) == 0 &&list[i].line_number == list[head].line_number) {++list[i].cnt;found = 1;break;}}if (!found) {++list[head].cnt;++head;if (head == MAX_ERROR_RECORDS) {head = 0; // 循环记录}}}// 输出最后的错误记录int start = head >= 8 ? head - 8 : 0;for (int i = start; i < head; i++) {printf("%s %d %d\n", list[i].filename, list[i].line_number, list[i].cnt);}return 0;
}

这个代码虽然不复杂,但想要理解,还是需要好好的从头看一遍的。
希望本篇文章能对您有所帮助。
感谢阅读w

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

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

相关文章

漫画对话 ai翻译

復讐の教科書ーー81 81-1 いい加減吐け&#xff01;&#xff01;冴木&#xff01;&#xff01; 快说吧&#xff01;&#xff01;冴木&#xff01;&#xff01; お前が一連の事件の犯人なんだろ&#xff01;&#xff1f; 你就是连续事件的犯人吧&#xff01;&#xff1f; だか…

400G QSFP-DD光模块的分类及应用领域

400G QSFP-DD光模块是一种光通信设备&#xff0c;具有高带宽和高密度的特点&#xff0c;适用于各种数据中心和通信网络。本文将介绍400G QSFP-DD光模块的分类和应用领域。 400G QSFP-DD光模块的分类 400G QSFP-DD光模块可以根据其传输速率、光纤类型和工作距离等因素进行分类。…

SpringBoot的启动器——Spring-boot-starter介绍和常见启动器

1、Starter是什么 Spring Boot通过将我们常用的功能场景抽取出来&#xff0c;做成的一系列的启动器&#xff0c;我们只需要在项目中引入这些starter&#xff0c;相关的所有依赖就会全部被导入进来&#xff0c;并且我们可以抛弃繁杂的配置&#xff0c;例如&#xff1a; ​ spri…

探索Java的未来:创新与演进的旅程

探索Java的未来&#xff1a;创新与演进的旅程 Java&#xff0c;这个被誉为“一次编写&#xff0c;到处运行”的编程语言&#xff0c;自1995年诞生以来&#xff0c;一直以其跨平台性、面向对象和强大的安全性而著称。随着技术的不断进步和市场的不断变化&#xff0c;Java也在不…

游戏工作室如何利用惯性动作捕捉技术制作动画?

随着动捕设备不断进步和游戏行业的发展&#xff0c;惯性动作捕捉技术在游戏开发领域逐渐普及。惯性动作捕捉技术&#xff0c;可以精准捕捉现实世界中的真人动作&#xff0c;并将其精准应用于虚拟角色上&#xff0c;使游戏中的角色动作可以呈现出更写实、逼真和沉浸感&#xff0…

##10 卷积神经网络(CNN):深度学习的视觉之眼

文章目录 前言1. CNN的诞生与发展2. CNN的核心概念3. 在PyTorch中构建CNN4. CNN的训练过程5. 应用:使用CNN进行图像分类5. 应用:使用CNN进行时序数据预测代码实例7. 总结与展望前言 在深度学习的领域中,卷积神经网络(CNN)已经成为视觉识别任务的核心技术。自从AlexNet在2…

光伏设备制造5G智能工厂数字孪生可视化平台,推进行业数字化转型

光伏设备制造5G智能工厂数字孪生可视化平台&#xff0c;推进行业数字化转型。光伏设备制造5G智能工厂数字孪生可视化平台是光伏行业数字化转型的重要一环。通过数字孪生平台&#xff0c;光伏设备制造企业可以实现对生产过程的全面监控和智能管理&#xff0c;提高生产效率&#…

ESP32-C3模组上跑通MQTT(4)

接前一篇文章&#xff1a;ESP32-C3模组上跑通MQTT&#xff08;3&#xff09; 本文内容参考&#xff1a; 《ESP32-C3 物联网工程开发实战》 特此致谢&#xff01; 上一回讲到了MQTT的消息格式&#xff0c;讲解了MQTT控制报文中的固定头中的控制报文的类型、消息质量等级和标志…

基于51单片机的智能导盲手杖—超声波测距

基于51单片机的智能导盲手杖 &#xff08;仿真&#xff0b;程序原理图&#xff0b;PCB设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.显示前方障碍物距离。 2.实时测量距离&#xff0c;并通过蜂鸣器提醒距离过短&#xff0c;蜂鸣器蜂鸣发出预警。 3.可以通过按键调…

吴恩达机器学习笔记:第 9 周-17大规模机器学习(Large Scale Machine Learning)17.1-17.2

目录 第 9 周 17、 大规模机器学习(Large Scale Machine Learning)17.1 大型数据集的学习17.2 随机梯度下降法 第 9 周 17、 大规模机器学习(Large Scale Machine Learning) 17.1 大型数据集的学习 如果我们有一个低方差的模型&#xff0c;增加数据集的规模可以帮助你获得更好…

ubantu安装rabbbitmq

ubantu安装rabbbitmq 安装Erlang1、在linux下直接安装2、上传Erlang文件后解压 安装rabbitmq开启web管理接口创建用户及修改guest密码&#xff0c;删除guest默认账号 安装Erlang 1、在linux下直接安装 #运行以下命令直接安装&#xff1a; sudo apt-get install erlang#可运行…

【代码随想录】回溯问题之组合

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记&#xff0c;为了之后方便观看 解决的类型问题 组合无序&#xff0c;排列有序 组合切割子集排列&#xff08;强调元素的顺序&#xff09;棋牌问题&#xff08;n皇后&#xff0c;数独&#xff0…

postgres 查看全部数据库

在 PostgreSQL 中&#xff0c;要查看所有的数据库&#xff0c;你可以使用 psql 命令行工具并执行一个特定的命令。以下是查看所有数据库的步骤&#xff1a; 打开终端&#xff1a; 首先&#xff0c;打开你的终端或命令行界面。 连接到 PostgreSQL&#xff1a; 使用 psql 连接到…

jsbsim 调 pid 记录

1.先调俯仰角 pitch 俯仰角不能超过 xml 文件里定义的爬升角 高度不对&#xff0c;调 pitch 角的 pid&#xff0c;俯仰角 理论上调pid&#xff1a; 响应快了&#xff0c;P调小&#xff1b;响应慢了&#xff0c;P调大 I消除稳态误差&#xff0c;I调大 D防止震荡&#xff0c;震…

AWS Lambda 第一个例子Hello (JAVA)

什么是Serverless&#xff08;无服务器计算&#xff09; 行业通常所说的Serverless&#xff0c;主要是指“无服务器计算&#xff08;Serverless Computing&#xff09;”。无服务器计算&#xff0c;并不是真的不需要服务器&#xff0c;而是说&#xff0c;对于用户&#xff0c;…

Hadoop3:HDFS的Shell操作(常用命令汇总)

一、简介 什么是HDFS的Shell操作&#xff1f; 很简单&#xff0c;就是在Linux的终端&#xff0c;通过命令来操作HDFS。 如果&#xff0c;你们学习过git、docker、k8s&#xff0c;应该会发现&#xff0c;这些命令的特点和shell命令非常相似 二、常用命令 1、准备工作相关命令…

全球科技早参丨皮查伊:智能手机将是AI创新的核心平台、科学家研制出超纯硅 | 最新快讯

每经记者&#xff1a;文巧 每经编辑&#xff1a;兰素英 &#xff5c;2024年5月10日 星期五&#xff5c; NO.1 Neuralink首例人类脑机接口手术后设备出现问题 Neuralink最新宣布&#xff0c;在今年1月实施首例人类手术后&#xff0c;植入受试病患的设备遭遇了一系列机械故障。…

2024年5月发布的SparkyLinux 8使用的是Debian 13 trixie 的更新源

2024年5月发布的SparkyLinux 8使用的是Debian 13 trixie 的更新源&#xff0c;然后我改了清华对应的更新源&#xff0c;更新成功。纯粹是测试&#xff0c;具体应以官网信息为主。

Elasticsearch 索引、类型、文档、分片与副本等核心概念介绍

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《洞察之眼&#xff1a;ELK监控与可视化》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Elasticsearch简介 2、分布式搜索引擎的工作原理…

AlphaFold3(AF3)简单介绍:预测各种生物分子结构和它们之间相互作用的深度学习模型

参考: 文章地址: https://www.nature.com/articles/s41586-024-07487-w https://blog.google/technology/ai/google-deepmind-isomorphic-alphafold-3-ai-model/ AlphaFold3体验官网: https://golgi.sandbox.google.com/ 《Accurate structure prediction of biomolecula…