程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> c語言編程之sglib庫的簡單使用

c語言編程之sglib庫的簡單使用

編輯:關於C
說實話自從大學畢業後已經很久沒有用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;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved