- 博客(9)
- 收藏
- 关注
原创 双向循环链表
循环与不循环区别 单向链表:只有一个指向下一个节点的指针。 优点:单向链表增加删除节点简单。遍历时候不会死循环; 缺点:只能从头到尾遍历。只能找到后继,无法找到前驱,也就是只能前进。 适用于节点的增加删除。 双向链表:有两个指针,一个指向前一个节点,一个后一个节点。 优点:可以找到前驱和后继,可进可退; 缺点:增加删除节点复杂,需要多分配一个指针存储空间。 适用于需要双向查找节点值的情况 下面讲解双向循环链表的一般写法: #include<stdio.h> #include<malloc.
2020-10-14 15:10:44
623
原创 C语言链表操作
关于链表的说明与应用 链表属于C语言数据结构,学了数组为什么要学习链表对数据进行操作,简而言之,效率问题。 下面代码中,主要写了创建链表、查找、删除、判断是否是循环链表等等,一些常用功能在这里进行了总结。 #include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define ture 1 #define fa
2020-10-13 10:41:17
281
原创 TLV数据格式及解析
TLV数据格式 几乎所有的需要在卡片和终端之间传送的数据都是TLV格式的. PBOC文档里并没有对TLV编码细节做具体说明, 而EMV的手册里虽有叙述,但并不详细. 我下面就要很详细的分析TLV的编码格式并给出相应的TLV解码的伪代码. TLV是tag, length和value的缩写.一个基本的数据元就包括上面三个域. Tag唯一标识该数据元, length是value域的长度. Value就是数据本身了. 举个例子, 下面是一个tlv格式的AID(应用标识符)字节串”9F0607A000000003.
2020-09-15 10:09:17
3999
原创 关于memmove函数的实现
原型: void *memmove( void* dest, const void* src, size_tcount ); #include<string.h> 由src所指内存区域复制count个字节到dest所指内存区域。 src和dest所指内存区域可以重叠,但复制后dest内容会被更改。函数返回指向dest的指针。 Copies the values of num bytes from the location pointed by source to the memory bl.
2020-09-15 09:39:33
258
原创 对于指针传参的再一次简要的说明
对于简单指针传参的说明 #include<stdio.h> #include<malloc.h> #include<string.h> int InitStr(char *str); int main() { char *ptr = NULL; ptr = (char *)malloc(50); if(ptr==NULL) { return -1; } // ptr = "hello world!"; printf("ptr = %s\n ",ptr)
2020-09-07 09:14:56
155
原创 指针传参深入研究
1 关于C语言指针传参问题深入研究的结论 1.普通指针变量传参 当传入指针变量到另一个函数时,形参只是起到拷贝的作用,如果在形参上对这个指针变量动手脚,是改变不了这个指针变量所指向的内容,因为你地址都变了,看代码: #include<stdio.h> #include<string.h> #include<malloc.h> void InitP(char *p); int main() { char *p = NULL; p = (char *)malloc(5
2020-08-27 17:56:48
358
原创 C语言实现汉字的输出以及字库的应用
C语言实现汉字的输出以及字库的应用 我用的是HZK16字库,可以自行网上下载 代码如下: #include <stdio.h> #include<windows.h> #define FONT_SIZE (16) /* 字体大小 */ /* 获取汉字在汉字库中的索引位置 根据GB2312/GBK编码规则,汉字的低字节hz[0]是区码,高字节hz[1]是位码,汉字库从区位码0xa1a1开始存放汉字 */ #define HZ_INDEX(hz)
2020-08-25 16:38:26
6244
原创 C语言实现字符串在屏幕上滚动
关于半个字符的描述使用与判断 一个汉字是由两个字符组成,避免输出时乱码,可以先判断传进来的字符是否为半个字符,代码如下: int half_chn(char *info, int len) { int i; for(i=0; i<len; ) { if(info[i] >= 0x80) i += 2; else i++; } if(i == len) retur
2020-08-25 16:29:06
4619
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人