zoukankan      html  css  js  c++  java
  • 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 ",elem->first,elem->second);
      elem = elem->next;
      free(tmp);
     }

     return 0;
    }

  • 相关阅读:
    layui的table使用,二
    将字符串中的以某个字符间隔放到数组中
    oracle中的 函数应用
    spring 的3种常用的注入方式
    写一个方法,输入两个正整数,输出在两个正整数范围内即被3整除,又被7整除的正整数
    Myeclipse 10.7配置egit及导入项目
    Plsqi安装
    web项目引入js包时,报syntax error on token
    java笔试面试题总结
    web.xml中的配置
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3170371.html
Copyright © 2011-2022 走看看