Linux C 函数参考(数据结构及算法)

2016-01-29 18:48 3 1 收藏

Linux C 函数参考(数据结构及算法),Linux C 函数参考(数据结构及算法)

【 tulaoshi.com - Linux 】


crypt(将密码或数据编码) 相关函数 getpass表头文件 #define _XOPEN_SOURCE#include定义函数 char * crypt (const char *key,const char * salt);函数说明 crypt()将使用Data EncryptionStandard(DES)演算法将参数key所指的字符串加以编码,key字符串长度仅取前8个字符,超过此长度的字符没有意义。参数salt为两个字符组成的字符串,由a-z、A-Z、0-9,“.”和“/”所组成,用来决定使用4096种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针,参数key 所指的字符串不会有所更动。编码过的字符串长度为13个字符,前两个字符为参数salt代表的字符串。返回值 返回一个指向以NULL结尾的密码字符串。附加说明 使用GCC编译时需加-lcrypt。范例 #includemain(){char passwd[13];char *key;char slat[2];key= getpass(“Input First Password:”);slat[0]=key[0];slat[1]=key[1];strcpy(passwd,crypt(key slat));key=getpass(“Input Second Password:”);slat[0]=passwd[0];slat[1]=passwd[1];printf(“After crypt(),1st passwd :%sn”,passwd);printf(“After crypt(),2nd passwd:%s n”,crypt(key slat));}执行 Input First Password: /* 输入test,编码后存于passwd[ ] */Input Second Password /*输入test,密码相同编码后也会相同*/After crypt () 1st Passwd : teH0wLIpW0gyQAfter crypt () 2nd Passwd : teH0wLIpW0gyQ bsearch(二元搜索) 相关函数 qsort表头文件 #include定义函数 void *bsearch(const void *key,const void *base,size_t nmemb,size_tsize,int (*compar) (const void*,const void*));函数说明 bsearch()利用二元搜索从排序好的数组中查找数据。参数key指向欲查找的关键数据,参数base指向要被搜索的数组开头地址,参数nmemb 代表数组中的元素数量,每一元素的大小则由参数size决定,最后一项参数compar为一函数指针,这个函数用来判断两个元素之间的大小关系,若传给compar的第一个参数所指的元素数据大于第二个参数所指的元素数据则必须回传大于0 的值,两个元素数据相等则回传0。附加说明 找到关键数据则返回找到的地址,如果在数组中找不到关键数据则返回NULL。范例 #include#include#define NMEMB 5#define SIZE 10int compar(const void *a,const void *b){return (strcmp((char *)a,(char *)b));}main(){char data[50][size]=;char key[80],*base ,*offset;int i, nmemb=NMEMB,size=SIZE;while(1){printf(“>”);fgets(key,sizeof(key),stdin);key[strlen(key)-1]=’’;if(!strcmp(key,”exit”))break;if(!strcmp(key,”list”)){for(i=0;ihello /*输入hello字符串*/hello not found! /*找不到hello 字符串*/add hello to data array /*将hello字符串加入*/>.list /*列出所有数据*/freebsdlinuxsolarissunoswindowshello>hellofound: hello lfind(线性搜索) 相关函数 lsearch表头文件 #include定义函数 void *lfind (const void *key,const void *base,size_t *nmemb,size_tsize,int(* compar) (const void * ,const void *));函数说明 lfind()利用线性搜索在数组中从头至尾一项项查找数据。参数key指向欲查找的关键数据,参数base指向要被搜索的数组开头地址,参数nmemb代表数组中的元素数量,每一元素的大小则由参数size决定,最后一项参数compar为一函数指针,这个函数用来判断两个元素是否相同,若传给compar的异地个参数所指的元素数据和第二个参数所指的元素数据相同时则返回0,两个元素数据不相同则返回非0值。Lfind()与lsearch()不同点在于,当找不到关键数据时lfind()仅会返回NULL,而不会主动把该笔数据加入数组尾端。返回值 找到关键数据则返回找到的该笔元素的地址,如果在数组中找不到关键数据则返回空指针(NULL)。范例 参考lsearch()。 lsearch(线性搜索) 相关函数 lfind表头文件 #include定义函数 void *lsearch(const void * key ,const void * base ,size_t * nmemb,size_t size, int ( * compar) (const void * ,const void *));函数说明 lsearch()利用线性搜索在数组中从头至尾一项项查找数据。参数key指向欲查找的关键数据,参数base指向要被搜索的数组开头地址,参数nmemb 代表数组中的元素数量,每一元素的大小则由参数size决定,最后一项参数compar 为一函数指针,这个函数用来判断两个元素是否相同,若传给compar的第一个参数所指的元素数据和第二个参数所指的元素数据相同时则返回0,两个元素数据不相同则返回非0值。如果lsearch()找不到关键数据时会主动把该项数据加入数组里。返回值 找到关键数据

来源:https://www.tulaoshi.com/n/20160129/1507355.html

延伸阅读
递归法和回溯法 有人说,回溯实际上是递归的展开,但实际上。两者的指导思想并不一致。 !-- frame contents -- !-- /frame contents -- 打个比方吧,递归法好比是一个军队要通过一个迷宫,到了第一个分岔口,有3条路,将军命令3个小队分别去探哪条路能到出口,3个小队沿着3条路分别前进,各自到达了路...
关于迷宫,有一个引人入胜的希腊神话,这也是为什么现今每当人们提到这个问题,总是兴致勃勃(对于年青人,估计是RPG玩多了),正如虽然九宫图连小学生都能做出来,我们总是自豪的说那叫“洛书”。这个神话我不复述了,有爱好的可以在搜索引擎上输入“希腊神话 迷宫”,就能找到很多的介绍。 迷宫的神话讲述了一位英雄如何靠着“...
3号盘子的目标柱是C,但是已经有了1号盘子,我们最直觉的反映就是——将碍事的盘子搬到另一根柱子上面去。于是,我们要做的是(规律2):保存当前柱的信息(柱子号、应该搬动的最下面一块盘子的号,和它的目标柱),以备当障碍清除后回到现在的柱子继续搬,将当前柱转换为碍事的盘子所在的柱子。假设这样若干步后,我们将7号盘子从A搬到了C,此...
栈和队列是操作受限的线性表,似乎每本讲数据结构的数都是这么说的。有些书按照这个思路给出了定义和实现;但是很遗憾,这本书没有这样做,所以,原书中的做法是重复建设,这或许可以用不是一个人写的这样的理由来开脱。 !-- frame contents -- !-- /frame contents -- 顺序表示的栈和队列,必须预先分配空间,并且空...
节点类 #ifndef Node_H #define Node_H template class Type class Node //单链节点类 { public: Type data; NodeType *link; Node() : data(Type()), link(NULL) {} Node(const Type &item) : data(item), link(NULL) {} Node(const Type &item, NodeType *p) : data(ite...

经验教程

805

收藏

38
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部