自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 C语言使用stream完成协议封送

开发过程中,对于自定义协议的打包,可以借助stream完成。

2024-11-06 13:21:05 168

原创 C++多线程习题:非原创增加注释(02)

【代码】C++多线程习题:非原创增加注释(02)

2024-11-05 13:26:28 141

原创 C++多线程习题:非原创增加注释(01)

子线程循环 1 次,然后主线程循环 2 次;接着又回到子线程循环 1 次,完成后再回到主线程循环 2 次, 如此往复3次。

2024-11-04 11:16:35 131

原创 c++使用binstr_to_value将二进制字符串转换为指定类型数值

【代码】c++使用binstr_to_value将二进制字符串转换为指定类型数值。

2024-10-31 11:32:27 78

原创 navstr:一个简单的字符串数据解析实现

实现navstr的时候,我记得当时是为了帮下位机程序处理GPS文本信息。navstr的主要功能就是根据一些分割标记,从字符串中提取出一些数据来。测试程序 main.c。

2024-10-30 07:00:00 338

原创 C语言一条语句输出分隔符

不想这么丑陋下去了,就用这一句灵魂代码!你是否还在像下面这样,输出一行分隔符。

2024-10-29 20:04:11 111

原创 C++利用stringstream分割字符串

【代码】C++利用stringstream分割字符串。

2024-10-29 07:00:00 103

原创 位域定义与数值位的对应关系

位域项与数据位从低位开始对应,即:最先定义的位域对应数值的最低位。

2024-10-28 16:13:40 179

原创 一图看懂C++生命周期相关函数间的关系

原文链接:When to Write Which Special Member

2024-10-27 22:28:55 152

原创 C语言运算符优先级

【代码】C语言运算符优先级。

2024-10-26 16:24:29 158

原创 c++ 容器实用方法: contains_where和move

【代码】c++ 容器实用方法: contains_where和move。

2024-10-25 16:24:17 86

原创 c++ 容器实用方法:indexOf和contains

【代码】c++ 容器实用方法:indexOf和contains。

2024-10-24 15:08:57 114

原创 用色彩提升信息的辨识度

系统提供了一些控制台相关的API,可以让我们对其进行个性化定制,比如设置窗口的大小,标题、文本属性等。如此一来,平台相关的细节被封装了起来,独立的模块,也使得复用更加简单,这就是我们提供console模块的动机。设置文本为灰白色(gray),此后你可以传递一个0-255间的数值,改变当前输出色,直到再次更改。现在只需根据删除文件的状态值,选择一个输出色,这微小的改动让我们的程序增色不少。最终结构上,由主函数驱动两个模块,ccleaner引用console模块,辅助完成内部实现。但是,从模块的角度讲,这是。

2024-10-23 21:59:03 16

原创 打磨成顺手的工具

对于控制台应用程序,通过命令行参数定制程序功能是不二之选。ccleaner的三个命令项都是可选的,根据规则下面的命令都是合法的。

2024-10-22 16:21:49 244

原创 有序删除:先文件后目录

ccleaner在删除上的逻辑是遇到什么删除什么。如果我们希望先删除文件,再是文件夹,这就需要先将文件夹名称缓存起来,这里是通过一个指针数组来表达。接下来我们可以通过strdup()函数,创建名称字符串副本,然后将它存储到subdirs中。strdup先使用malloc分配空间然后复制内容,所以要记得使用free释放。一切就绪后,我们通过遍历subdirs进行递归删除。我们看看用程序清理下面这种文件结构时的表现。现在,我们就可以得到一个整齐的输出了。

2024-10-21 14:28:57 349

原创 生成统计报告

但是我们并没有这么做,这样的设计使得struct cc_options必须被定义在cclenaer.h中,而我们的意图是隐藏具体的实现,也就是说我们不希望用户(使用ccleaner模块的其它模块)知道配置选项的细节,因此接口原型维持不变。对于程序的选项参数,这次我们使用struct把它们聚集起来,这与使用独立的全局变量进行存储本质上没什么区别,但从思想上讲,我们相当于对数据进行了抽象。改进的clear_core()函数增加了对计数信息的使用,这里需要理解的是递归前后的文件计数的含义。,用于追踪统计信息。

2024-10-20 15:48:11 12

原创 第一版面世

考虑到易用性,比如我们要删除指定目标下的所有文件,也支持传递"*.*",否则逐个输入要匹配的后缀,显然缺少了易用性。这两个参数都是属于配置程序行为,所以函数的名字含有config,其实我想说的是,为函数取一个确切的名称,能让代码更好理解。如果没有进行这样的物理划分,将所有的代码集中到一个.c文件中,在维护、复用方面都是不利的。这些选项参数随后被保存到全局变量中,供后续代码使用。在main.c中,我们实现main函数,它简单的使用接口,将整个流程驱动起来,现在我们配置的是删除当前debug目录下的所有文件。

2024-10-19 12:14:02 18

原创 遍历文件夹

为了遍历一个文件夹下的所有文件,我们可以配对使用系列函数。在Windows平台下,它们定义于,并由宏统一了不同平台下的名称差异性。这个宏根据当前编译环境的配置,映射到32位或64位的实现,比如在32位环境下,使用_findfirst实际调用的是_findfirst32的实现。findfirst函数的基础原型都是一个待查找的文件名和finddata指针。第一个参数为文件名,可以用"*.*“来匹配查找所有文件,也可以用”*.c"来查找反缀名为.c的文件。第二个参数是_finddata_t结构体指针。

2024-10-18 21:44:11 18

原创 删除文件与文件夹

在ccleaner中,清理操作就是删除文件或文件夹,这通过remove或rmdir函数来实现。

2024-10-18 12:51:51 33

原创 ccleaner 项目介绍

在我编写教程的过程中,经常会创建项目编码测试,日积月累之下,由Visual Studio生成的中间文件也越来越多,于是便诞生了ccleaner这个想法:仅需双击,刷的一下(取决于文件的数量),这些文件便被清除了。与此同时,我也开始了这个系列的教程编写,这是一个简单但有趣的项目。简单,是因为它的核心就是删除文件,没有其它什么复杂的逻辑;有趣,是因为这是我们为自己编写的一个实用工具。作为初学者的入门项目,这个流程是合适的,所以这里我们从这个角度出发,对项目做一个简单梳理。开始阅读吧,希望你能喜欢。

2024-10-18 09:43:59 25

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除