设为首页 加入收藏

TOP

c语言编程之sglib库的简单使用
2014-11-23 22:04:08 】 浏览:7149
Tags:语言编程 sglib 简单 使用
说实话自从大学毕业后已经很久没有用c语言写过程序了,一般都是使用c++,c++的stl和boost等,这些代码库大大简化了我们的 编程复杂度。由于最近某种原因在次开始用c写程序。我是个比较懒的人,比较喜欢使用别人的第三方库,好不容易找到一个叫sglib的开源库,当然要使用一下啦。不多说。

#include 
#include 
#include 
#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语言之vfprintf的段错误 下一篇关于C语言中的 " 类型提升 &..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目