当前位置:  技术问答>linux和unix

这个函数实现的是什么功能?

    来源: 互联网  发布时间:2016-02-13

    本文导语:  char *constmap(cm,s,len) struct constmap *cm; char *s; int len; {   constmap_hash h;   int pos;   h = hash(s,len);   pos = cm->first[h & cm->mask];   while (pos != -1) {     if (h == cm->hash[pos])       if (len == cm->inputlen[pos])     ...

char *constmap(cm,s,len)
struct constmap *cm;
char *s;
int len;
{
  constmap_hash h;
  int pos;
  h = hash(s,len);
  pos = cm->first[h & cm->mask];
  while (pos != -1) {
    if (h == cm->hash[pos])
      if (len == cm->inputlen[pos])
        if (!case_diffb(cm->input[pos],len,s))
  return cm->input[pos] + cm->inputlen[pos] + 1;
    pos = cm->next[pos];
  }
  return 0;
}

其实不能理解的原因是不明白constmap这个结构体成员的主要作用

|
struct constmap结果应该是全局的什么总统描叙..可以贴贴结构源码大家可以分析下

函数大概意思
首先根据字符串s及其长度,通过hash函数返回混码的结果赋值给混码类型的变量h,混码类型(constmap_hash估计是个无符号整形之类的);
再通过混码h与结构cm的对象掩码mask位与得到的其对象first数字的下表,并去数组值给pos,
循环的意思是如果h与结构cm的对象hash[pos](注:混码数表)相等且len也与cm的对象inputlen[pos],(注:输入长度)那么再通过case_diffb函数比较查到的结构cm输入input表的位置与函数参数s和len,进行比较,如果相同返回再cm结构里查到pos的位置的input值加上inputlen其位置的值再加1,否则继续下查直到pos返回为-1退出,返回0


    
 
 

您可能感兴趣的文章:

  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 谁帮我看一下下面几个实现函数需要实现要用到什么函数?在线等待,必给分!
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 标准C下没有字符处理函数,怎样写一个实现下面功能的函数?
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • EJB QL都支持什么函数啊?能不能支持trim函数呢?如果不能,应该怎么实现这样的功能呢?
  • php通过pack和unpack函数实现对二进制数据封装及解析
  • sendfile()函数为什么效率高? 它的实现难道没有涉及普通I/O函数么
  • Linux有定时器函数吗?是不是要自己实现?如果有的话是什么函数呢?谢谢
  • 自己实现strcpy函数的实现方法
  • C语言应用程序使用的函数来源于libc库, Libc库中的函数是在哪里实现的??
  • 高手帮帮忙!vi中如何实现跳转到任意结构体或函数的声明处,包括系统库中声明的函数和数据结构?
  • 如何实现Java下的回调函数!
  • 怎样从Linux源文件中找到函数实现方式?
  • 关于内核里实现的函数
  • 可不可以在程序中直接使用ftp客户端的函数实现文件传输?
  • 整型数据做函数的参数,怎样实现传地址,和调用程序共用一个地址?
  • 请问如何查看libX11.so中的函数实现
  • 菜鸟问题:linux各个函数的实现源代码在哪?
  • linux下c++怎样实现回调(CALLBACK)函数?
  • 请问,pipe()这个管道建立函数在哪里实现的?
  • 我想查某个函数的功能,或者找某个功能的函数集合的文档在哪能找到
  • 想改变ldap.h中的一个函数功能或者添加一个函数
  • 寻找和fstat和ftruncate函数功能相似,但能操作FILE *fp流的函数.
  • 请问有没头函数<pthread.h>和<signal.h>里的函数的详细功能介绍?和使用方法???
  • Java中有不有与VB中Replace函数功能类似的函数?
  • 怎样在kdev或emacs下设置出象在ms vc上的函数原型提示功能?
  • java中如何实现类似vb中的chr()函数的功能?
  • MySQL实现类似Oracle中的decode()函数的功能
  • 请问:strsep函数的功能是什么?
  • JAVA中有没有和这个功能相近的函数?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • cityhash 32位,64位和128位介绍及函数列表
  • js的众多函数令小弟实在搞不清楚!哪有函数速查手册之类的软件或者书籍!谢了!比如,setInterval、clearInterval这两个函数是干什么的?
  • PHP的substr() 函数用法
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3