![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 52
barbyQAQ
这个作者很帅,什么都没留下…
展开
-
getaddrinfo解析域名
【代码】getaddrinfo解析域名。原创 2024-03-24 20:34:42 · 154 阅读 · 0 评论 -
gethostbyname()域名解析到IP
入参是域名字符串,返回值中存储了对应的IP地址。除了返回IP信息外,还带有其他信息。域名转IP只需要关注。原创 2024-03-24 11:50:46 · 356 阅读 · 0 评论 -
C/C++编码问题研究
Unicode、GBK、wchar_t原创 2024-01-26 14:45:17 · 1330 阅读 · 0 评论 -
Windows中Unicode和ANSI字符串(tchar.h)
要么一个都不定义。(因为针对不属于C++标准的标识符,C运行库始终会为它们附加下划线前缀。但是Windows团队并没有这样做。宏时转成宽字符处理函数,在未定义时转成ANSI的处理函数。注意,Visual Studio创建的项目默认会定义。《Windows核心编程 第5版》宏是为了方便的定义常量,定义了。宏时,会在字面量前面加上大写的。实际上,应确保要么同时定义了。未定义时就为字面量本身。系列函数也会在定义了。原创 2023-12-22 17:40:56 · 91 阅读 · 0 评论 -
Windows C++列出盘符名
不过windows没提供可以用的宏,这一点很烂。windows下也有实现,需要包含。这个函数是POSIX要求的。,查MSDN就行了,具体为。原创 2023-11-24 11:58:07 · 303 阅读 · 0 评论 -
Windows窗体程序开启console(cmd命令行)
在项目属性->链接器->系统里 把子系统换成。选项会附带console。不会附带console。原创 2023-11-18 15:36:58 · 417 阅读 · 0 评论 -
mingw-gcc编译窗体和console
选项编译,出来的窗体就会带上命令行,用。下面这段程序,如果用。原创 2023-11-18 09:25:22 · 212 阅读 · 0 评论 -
C语言多级指针含义归纳
今天在实习二叉排序树的结点删除时,用到了三级指针。一下子有些困惑了。一番思考,才觉得对指针的理解更透彻了。条理地总结一下,从多个角度来分析,可以让思路更清晰。不同角度的含义单独来看不复杂,但是组合在一起就容易使我们陷入困惑。理解了各个角度下的含义,就能明白什么时候、为什么要用(多级)指针。原创 2023-08-08 18:58:32 · 359 阅读 · 0 评论 -
哈希桶实现
参考的另一篇博客,将他的代码稍微改了改拿来用。哈希桶,听名字不知道是什么,看完本质就是用。至于hash函数,这个作者用的应该是。原创 2023-07-24 14:56:40 · 66 阅读 · 0 评论 -
KMP算法实现
总归不是很好懂的,需要注意不同人在实现时对next数组的定义可能不同。学习时大概要分3步:了解KMP算法流程和大致原理,理解next数组的求解,理解代码实现。原创 2023-07-24 14:11:44 · 53 阅读 · 0 评论 -
无符号数和有符号数的“bug”
从概率上来讲,这个错误是很容易犯的,而且不是很好查。然而居然头一次遇到,多少有些后怕。结果,代码果然不能正常工作了,拿gdb单步追踪,发现了问题所在:索引变量。,与预期截然相反,总以为编译器会聪明地处理好这种情况,然而并没有。(0xFFFFFFFFFFFFFFFF),最后用无符号比较指令。,就会得到非预期结果,?(b),也就是我们定义的两个整型变量。可以看到,第 20行将-1赋值给。(cdeq)指令将它符号位扩展至。的值可能为-1,此时。(a),将100赋值给。是等价的,可是如果将。原创 2023-07-24 13:37:43 · 565 阅读 · 0 评论 -
汇编实现strcpy
【代码】汇编实现strcpy。原创 2023-07-22 09:38:03 · 973 阅读 · 0 评论 -
从read()系统调用浅谈错误处理
错误处理,是写出健壮程序重要的一关。良好的错误处理有助于发现bug、减少debug时间。也顺带地提高了我们的自信。如果你只是抱着“能跑就行”的态度,且从不检查返回值,大可不必继续阅读。下面分享个人的总结,包括书籍、他人建议对我的影响和启示。原创 2023-05-11 00:47:25 · 1017 阅读 · 0 评论 -
poll()系统调用
参数fds列出了我们需要poll()来检查的文件描述符。该参数为pollfd参数nfds指定了数组fds中元素的个数。数据类型nfds_t实际为无符号整型。pollfd结构体中的events和revents字段都是位掩码。调用者初始化events来指定需要为描述符fd做检查的事件。当poll()返回时,revents被设定以此来表示该文件描述符上实际发生的事件。下表列出了可能会出现在events和revents字段中的位掩码。该表中第一组位掩码(POLLINPOLLRDNORMPOLLRDBAND。原创 2023-05-10 20:49:41 · 708 阅读 · 0 评论 -
I/O多路复用概念
内核一旦发现进程指定的一个或多个I/O条件就绪(也就是说输入已经准备好被读取,或者描述符已能承接更多的输出),它就通知进程。——这个能力称为I/O复用(I/O multiplexing),是由select()和poll()这两个函数支持的。还有POSIX的变种pselect()。原创 2023-05-09 15:30:09 · 679 阅读 · 0 评论 -
处理多个/dev/input/eventX的情况
实在是太多了,十几二十个。而且每个人的电脑上鼠标、键盘对应的文件都不一样,可能插拔过后就变了。给我们写程序带来很大不便。原创 2023-05-09 05:26:51 · 1247 阅读 · 1 评论 -
linux input_event实现按键检测
关于Linux input子系统的概念,我也不太懂,会用就行了。原创 2023-05-09 04:15:13 · 2168 阅读 · 0 评论 -
linux检测按键
【代码】linux检测按键。原创 2023-05-09 02:16:46 · 692 阅读 · 0 评论 -
gdb调试核心转储文件
程序能够运行起来,但是过一段时间会中止,并报一个“段错误”。首先,内存泄露会导致这种错误,这时只需要用valgrind等工具分析一下,就很容易解决。然而,如果程序内存占用很小的情况下报“段错误”,这个情况就很难排查了。原创 2023-05-07 00:40:45 · 260 阅读 · 0 评论 -
哈夫曼求编码最小化实现
首先呢,哈夫曼树是二叉树。char data;int weight;用的索引 + 数组 来实现,这其实很契合哈夫曼树的构建规则:有一个初始结点数组。char data;int weight;思想其实都一样,没必要死搬课本,哪个好就用哪个。这里只提供指针实现,索引实现的,各种树很多了二叉树C语言实现。原创 2023-04-29 21:56:38 · 714 阅读 · 0 评论 -
二叉树C语言实现
【代码】二叉树C语言实现。原创 2023-04-28 11:07:00 · 859 阅读 · 0 评论 -
C语言实现面向对象的方法详解
还是那句话,面向对象编程是一种方法,并不局限于某一种编程语言。用 C 语言实现封装、单继承,理解和实现起来比较简单,多态反而会稍微复杂一点,如果打算广泛的使用多态,还是推荐转到 C++ 语言上,毕竟这层复杂性被这个语言给封装了,你只需要简单的使用就行了。但并不代表,C 语言实现不了多态这个特性。转载 2023-04-18 21:55:16 · 1198 阅读 · 0 评论 -
使用wchar和wprintf
成功在Linux和Windows成功调用wprintf()原创 2023-04-08 22:05:43 · 759 阅读 · 0 评论 -
wchar_t wprintf无法打印中文 / 中文乱码
https://www.cnblogs.com/moonbay/archive/2011/11/29/2267387.html转载 2023-04-08 20:38:27 · 163 阅读 · 0 评论 -
C++无序初始化成员
c++原创 2023-02-06 03:26:44 · 87 阅读 · 0 评论 -
extern “C“
c转载 2023-02-05 14:52:16 · 51 阅读 · 0 评论 -
GCC创建和使用静态链接库(.a文件)
makefile转载 2022-12-13 11:20:33 · 325 阅读 · 0 评论 -
makefile示例
makefile原创 2022-12-12 01:19:58 · 271 阅读 · 0 评论 -
lua参考手册
lua转载 2022-12-04 02:22:17 · 704 阅读 · 0 评论 -
GTK参考手册
gtk转载 2022-11-23 13:19:56 · 479 阅读 · 0 评论 -
详解C语言实现植物大战僵尸阳光9999
文章目录效果展示工具:要求(建议)一、CE部分:二、核心代码部分三、润色效果展示另外点击还会有"德玛西亚!"音效工具:核心代码:Devcpp足够;对话框界面和资源文件的添加:CodeBlocks资源编辑器:ResEdit格式转换工具:格式工厂、Spy++必备工具:CheatEngine要求(建议)打过CheatEngineTutorial第8关“多级指针”,会修改静态地址下的数据==================================================原创 2021-06-13 20:37:00 · 6043 阅读 · 1 评论 -
pthread_cancel手册翻译
你还在困惑pthread_cancel()吗?原创 2022-11-01 20:44:10 · 315 阅读 · 1 评论 -
线程 Pthread API
线程原创 2022-09-17 16:51:56 · 1085 阅读 · 0 评论 -
[小项目]手把手教你C语言哈夫曼压缩/解压缩
这是我大一写过的一个小项目,现在大三,重新实现了一下。这是原来的链接可以看一下效果,思路和现在的一样。扩展性、健壮性比原来更好,思路也更清晰了。当时只想花里胡哨,这次重心放在质量、功能上。后续会不断改进它,直到它贴近实际。原创 2022-09-12 18:18:46 · 4214 阅读 · 6 评论 -
C中文件操作的文本模式和二进制模式,到底有啥区别?
c转载 2022-09-05 17:56:36 · 437 阅读 · 0 评论 -
C++项目汇总
wqw转载 2022-06-27 17:04:59 · 64 阅读 · 0 评论 -
宏当中的可变参数
原文链接3.6 Variadic MacrosA macro can be declared to accept a variable number of arguments much as a function can. The syntax for defining the macro is similar to that of a function. Here is an example:#define eprintf(…) fprintf (stderr, VA_ARGS)This kind翻译 2022-04-04 10:50:28 · 3292 阅读 · 0 评论 -
_Generic示例
#define ADD(a,b) _Generic((a), \ int:addI(a,b),\ double:addF(a,b), \ default:unsupport(a,b))int main(void){ ADD(1 , 2); ADD(1.1,2.2); return 0;}原创 2022-03-07 20:31:09 · 69 阅读 · 0 评论 -
C语言restrict关键字
关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。void *memcpy( void * restrict dest , const void * restrict src, size_t n) ...原创 2022-03-07 19:48:05 · 1080 阅读 · 0 评论 -
格式符%.*s
#include <stdio.h>int main(){ char buffer[]="1234567"; printf("%*s",10,buffer); return 0;}此时,*s表示s是一个长度可变的,必须由其后第一个参数指明其长度,第二个参数指明其内容。原创 2022-02-13 17:51:15 · 1129 阅读 · 0 评论