首页 > 其他分享 >基础设施:简易调试器

基础设施:简易调试器

时间:2024-10-31 14:47:27浏览次数:4  
标签:分割 函数 strtok 示例 简易 分隔符 字符串 调试器 基础设施

之前总文章写作太卡了,写了快4万字,卡的我随便打个字都有延迟,索性直接开个贴把这一块补上,就跟github项目的branch分支一样,等我把这些分支弄好后再拼到总文章里面去。

1.8.4.1解析命令

我们先来查看一下readline的manual手册。

man readline

接着,我们再来查看一下strtok手册。

man strtok

strtok函数是C语言标准库中的一个函数,用于将字符串分割成一系列子字符串。这个函数定义在<string.h>头文件中。当使用strtok函数时,可以指定一个或多个分隔符,函数会根据这些分隔符将字符串分割,并返回指向第一个子字符串的指针。在后续的调用中,应将第一个参数设置为NULL,以便函数继续从上次结束的位置开始分割字符串。

示例代码

下面是使用strtok函数的一个示例代码,它展示了如何使用这个函数来分割一个字符串:

strtok函数是C语言标准库中的一个函数,用于将字符串分割成一系列子字符串。这个函数定义在<string.h>头文件中。当使用strtok函数时,可以指定一个或多个分隔符,函数会根据这些分隔符将字符串分割,并返回指向第一个子字符串的指针。在后续的调用中,应将第一个参数设置为NULL,以便函数继续从上次结束的位置开始分割字符串。

示例代码

下面是使用strtok函数的一个示例代码,它展示了如何使用这个函数来分割一个字符串:

#include <string.h>
#include <stdio.h>

int main() {
char str[80] = "This is - www.runoob.com - website";
const char s[2] = "-";
char *token;

// 获取第一个子字符串
token = strtok(str, s);

// 继续获取其他的子字符串
while(token != NULL) {
printf("%s\n", token);
token = strtok(NULL, s);
}

return 0;
}
在这个示例中,字符串"This is - www.runoob.com - website"被分割成了三个子字符串:"This is"、"www.runoob.com"和"website"。分隔符"-"被用来分割字符串。

注意事项

使用strtok函数时需要注意以下几点:

strtok函数在分割字符串时会修改原始字符串,因此应确保只在可以修改的字符串上使用它。

由于strtok函数在内部使用静态指针来保持调用之间的状态,因此它不是线程安全的。在多线程环境中,应使用strtok_r函数或其他线程安全的版本。

通过使用strtok函数,可以方便地将一个字符串按照指定的分隔符进行分割,从而获得所需的子字符串。这在处理诸如命令行参数、配置文件等场景中非常有用。

在这个示例中,字符串"This is - www.runoob.com - website"被分割成了三个子字符串:"This is"、"www.runoob.com"和"website"。分隔符"-"被用来分割字符串。

注意事项

使用strtok函数时需要注意以下几点:

  • strtok函数在分割字符串时会修改原始字符串,因此应确保只在可以修改的字符串上使用它。

  • 由于strtok函数在内部使用静态指针来保持调用之间的状态,因此它不是线程安全的。在多线程环境中,应使用strtok_r函数或其他线程安全的版本。

通过使用strtok函数,可以方便地将一个字符串按照指定的分隔符进行分割,从而获得所需的子字符串。这在处理诸如命令行参数、配置文件等场景中非常有用。

1.8.4.2单步执行

1.8.4.3打印寄存器

打印寄存器可以直接调用API接口,即上面的这个函数。

1.8.4.4扫描内存


 

1.8.4.5实现单步执行、打印寄存器、扫描内存

 

标签:分割,函数,strtok,示例,简易,分隔符,字符串,调试器,基础设施
From: https://blog.csdn.net/LYZ1102/article/details/143371159

相关文章

  • 【花雕学编程】Arduino动手做(237)---使用 ESP32 V1 Rev1 自身的热点来创建一个简易的 H
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......
  • 如何进行基础设施即代码(IAC)?
    基础设施即代码(IAC)是一种管理和配置IT基础设施的实践,主要遵循以下五个步骤:1.确立IAC的价值和理念;2.选择合适的工具和平台;3.编写和维护高质量的基础设施代码;4.实施持续集成和持续部署流程;5.进行持续的监控和反馈。从最初的设想到实施,我们都需要注意基础设施即代码的核心概念。......
  • kubernetes(k8s)简易学习
    容器与虚拟机容器为一种虚拟化技术,用来隔离运行在宿主机上的不同进程,使得进程之间、进程与操作者OS相互隔离、互不影响的技术。共享主机操作系统内核,无需虚拟化整个硬件。单个容器跑单个应用。优点:简易部署、启动快速、组合服务、易于迁移。虚拟机需要完整操作系统、虚拟化硬......
  • 2024.10.26 InfiniCLOUD WebDAV 简易登录器
     2024.10.26InfiniCLOUDWebDAV简易登录器  ;;2024.10.26InfiniCLOUDWebDAV简易登录器;;C:\APP\WinSCP\AHK\InfiniCLOUD.ahk;;WinSCP一键登录InfiniCLOUD的WebDAV文件服务的AutoHotkey脚本源代码#SingleInstance,force#Persistent;身份验证,请使用飞......
  • Vue2 项目实战:打造一个简易倒计时计时器工具 Vue2 实践教程:如何实现一个工作与休息倒
    效果图Vue2倒计时计时器工具教程在本教程中,我们将一步步实现一个Vue2倒计时计时器工具。这个工具允许用户在工作和休息模式之间切换,并设置倒计时时间。倒计时结束时,系统会发出提醒,提示用户切换工作或休息状态。非常适合初学者练习Vue的数据绑定、计算属性和事件处理......
  • 【AI声音】曼波音效,心月AI变声器简易教程
    最近大火的一根华仔估计很多朋友都知道,里边的曼波很可爱,今天我就分享给大家如何自己成为曼波当然首先得拥有软件 Docs 可以在AI神器找到变声器和曼波声音素材包然后直接双击安装即可:建议选择一下自定义修改一下安装位置,毕竟程序很大安装完毕首次进入当然第一步......
  • 使用 Ollama 部署本地 LLM:构建 AI REST API 的简易指南
    最近已有不少大厂都在秋招宣讲,也有一些已在Offer发放阶段了。节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了深入的讨论。总结链......
  • 简易CPU设计入门:验证取指令模块
    项目代码下载还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。下载本项目代码准备好了项目源代码以后,我们接着去讲解。本节前言想要学习本节,前提是,你得是学习过我讲......
  • 单模式匹配 KMP 算法 简易版学习笔记
    KMP前缀函数设\(S_i\)为字符串\(S\)的第\(i\)个位置。我们设\(\pi(i)\)表示字符串以\(i\)结尾的前缀的最长公共前后缀的长度。这里的前后缀都指的是真前缀、真后缀。怎么\(O(n)\)求出\(\pi(i)\)。性质:相邻的\(\pi\)至多增加1。因此,若\(s[\pi(i)+1]=s[i+1......
  • 重力属性使用简易手册
    物理系统使用的简易手册需求:小物件受到碰撞等力的作用时有滚动/旋转等物理表现方法:在包含Mesh的物体上添加collider以及rigidbody组件注:可以添加到包含mesh物体的外层,但添加到外层时collider的大小不符合物体本身,需要调整,尽可能添加到mesh的本体上.如图Collider组件介......