linux常用c函数数据结构及算法篇

来源:Linux认证    发布时间:2012-11-10    Linux认证视频    评论

  crypt(将密码或数据编码)

  相关函数  getpass

  表头文件  #define _XOPEN_SOURCE

  #include<unistd.h>

  定义函数  char * crypt (const char *key,const char * salt);

  函数说明  crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字符串加以编码,key字符串长度仅取前8个字符,超过此长度的字符没有意义。参数salt为两个字符组成的字符串,由a-z、A-Z、0-9,“.”和“/”所组成,用来决定使用4096 种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针,参数key 所指的字符串不会有所更动。编码过的字符串长度为13 个字符,前两个字符为参数salt代表的字符串。

  返回值  返回一个指向以NULL结尾的密码字符串。

  附加说明  使用GCC编译时需加-lcrypt。

  范例  #include<unistd.h>

  main()

  {

  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 :%s/n”,passwd);

  printf(“After crypt(),2nd passwd:%s /n”,crypt(key slat));

  }

  执行  Input First Password: /* 输入test,编码后存于passwd[ ] */

  Input Second Password /*输入test,密码相同编码后也会相同*/

  After crypt () 1st Passwd : teH0wLIpW0gyQ

  After crypt () 2nd Passwd : teH0wLIpW0gyQ

  bsearch(二元搜索)

  相关函数  qsort

  表头文件  #include<stdlib.h>

  定义函数  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<stdio.h>

  #include<stdlib.h>

  #define NMEMB 5

  #define SIZE 10

  int compar(const void *a,const void *b)

  {

  return (strcmp((char *)a,(char *)b));

  }

  main()

  {

  char data[50][size]={“linux”,”freebsd”,”solaris”,”sunos”,”windows”};

  char key[80],*base ,*offset;

  int i, nmemb=NMEMB,size=SIZE;

  while(1){

  printf(“>”);

  fgets(key,sizeof(key),stdin);

  key[strlen(key)-1]=’/0’;

  if(!strcmp(key,”exit”))break;

  if(!strcmp(key,”list”)){

  for(i=0;i<nmemb;i++)

  printf(“%s/n”,data[i]);

  continue;

  }

上一页1234下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答