c语言编程之sglib库的简单使用
说实话自从大学毕业后已经很久没有用c语言写过程序了,一般都是使用c++,c++的stl和boost等,这些代码库大大简化了我们的编程复杂度。由于最近某种原因在次开始用c写程序。我是个比较懒的人,比较喜欢使用别人的第三方库,好不容易找到一个叫sglib的开源库,当然要使用一下啦。不多说。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include "sglib.h"
typedef struct _ip_mask_map
{
int first;
int second;
struct _ip_mask_map* next;
}ip_mask_map,*pip_mask_map;
int ipcomp(ip_mask_map* elem1,ip_mask_map* elem2)
{
if ((elem1->first == elem2->first) &&
(elem1->second == elem2->second))
{
return 0;
}
else
{
return 1;
}
}
int main(int argc, char* argv[])
{
ip_mask_map *elem,*head=NULL,*_member;
elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
elem->first = 1;
elem->second = 100;
elem->next = NULL;
//添加elem到链表,如果指向链表的指针head为空时,将新元素elem赋值给head
SGLIB_LIST_CONCAT(ip_mask_map,head,elem,next);
elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
elem->first = 2;
elem->second = 200;
elem->next = NULL;
SGLIB_LIST_CONCAT(ip_mask_map,head,elem,next);
elem = (pip_mask_map)malloc(sizeof(ip_mask_map));
elem->first = 2;
elem->second = 200;
elem->next = NULL;
//如果成员已经在链表存在的话,_member返回指向那个成员的指针,否者返回NULL
SGLIB_LIST_ADD_IF_NOT_MEMBER(ip_mask_map,head,elem,ipcomp,next,_member);
if (_member != NULL)
free(elem);
//遍历并删除动态分配的内存
for (elem = head; elem != NULL;)
{
pip_mask_map tmp = elem;
printf("%d,%d\n",elem->first,elem->second);
elem = elem->next;
free(tmp);
}
return 0;
}
c语言编程之sglib库的简单使用的更多相关文章
- linux下c图形化编程之gtk+2.0简单学习
在linux下想做一个图形化的界面,然后自己选择使用gtk+2.0来进行编辑,我的电脑已经安装过gtk+2.0了,所以就在网上找了一个安装方法,结果未测试,大家有安装问题可以说下,一起探讨下. 1.安 ...
- java 网络编程之TCP通信和简单的文件上传功能
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- 网络编程4 网络编程之FTP上传简单示例&socketserver介绍&验证合法性连接
今日大纲: 1.FTP上传简单示例(详细代码) 2.socketserver简单示例&源码介绍 3.验证合法性连接//[秘钥加密(urandom,sendall)(注意:中文的!不能用)] 内 ...
- Netty网络编程之NIO概览与简单应用
>>关于NIO Java NIO即Java Non-blocking IO(Java非阻塞I/O),是Jdk1.4之后增加的一套操作I/O工具包,又被叫做Java New IO. (1)R ...
- java 网络编程之UDP通信和简单的群聊程序
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
单客户端和服务端的通信(基于UDP) 代码 服务端代码socket3.c #include<sys/types.h> #include<sys/socket.h> #inc ...
- C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo
在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架).单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架 ...
- GO语言的进阶之路-网络编程之socket
GO语言的进阶之路-网络编程之socket 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是socket; 在说socket之前,我们要对两个概念要有所了解,就是IP和端口 ...
- Python网络编程之TCP套接字简单用法示例
Python网络编程之TCP套接字简单用法示例 本文实例讲述了Python网络编程之TCP套接字简单用法.分享给大家供大家参考,具体如下: 上学期学的计算机网络,因为之前还未学习python,而jav ...
随机推荐
- Android学习路线(二十七)键值对(SharedPreferences)存储
假设你又一个相对较小的键值对数据想要保存,你应该使用SharedPreferences APIs.一个SharedPreferences 对象指向一个包括键值对的文件,它提供简单的方法来读写他们.每一 ...
- android GestureDetector 手势的判断
import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.Ges ...
- C++11 : variadic templates(可变参数模板)
Introduction: Before the possibilities of the new C++ language standard, C++11, the use of templat ...
- Node.js中的URL
Node.js中的URL 什么是URL URL是Uniform Location Resource的缩写,翻译为"统一资源定位符",也就是描述资源位置的固定表示方法.被URL描述的 ...
- chkconfig(check config)命令
功能说明:chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 语 法:chkconfig ...
- SQL从入门到基础–08 Union、Union all及案例
一.联合结果集 1. 简单的结果集联合: Select FNumber,FName,FAge from T_Employee union select FidCardNumber,FName,FAge ...
- Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
原文:InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序) InstallShield Limited Edi ...
- params参数的使用方法
params 将方法中实际参数列表中跟可变参数数组类型一致的类型,都处理为数组中的的元素 static void Main(string[] arr) { // int[] numbers={2,3, ...
- 3步学会用gulp
1.安装gulp 安装gulp到全局:npm install -g gulp 安装gulp到某个项目:npm install --save gulp 注意:请先安装nodejs(自带npm) 2.创建 ...
- JavaScript加密解密压缩工具
<script> a=62; function encode() { var code = document.getElementById('code').value; code = co ...