⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 404.htm

📁 unix高级编程原吗
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">               ● UNIX网络编程                       (BM: clown)                </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="393.htm">上一层</a>][<a href="405.htm">下一篇</a>]
<hr><p align="left"><small>发信人: ipxodi (乐乐~大地飞鹰), 信区: Hacker <br>

标  题: 密码生成器源程序 <br>

发信站: BBS 水木清华站 (Fri Dec 17 19:35:29 1999) <br>

#include <stdio.h> <br>

  <br>

#include <stdlib.h> <br>

  <br>

#include <ctype.h> <br>

  <br>

#include <string.h> <br>

  <br>

  <br>

  <br>

char charSet[8][256];//store all the charset <br>

  <br>

int rulePtr ; <br>

  <br>

char rule[256]= "\"ab[]\"[0-9][a-d]"; <br>

  <br>

  <br>

  <br>

void init() <br>

  <br>

  <br>

{ <br>

  <br>

        write(2,"please input the rules:",26); <br>

  <br>

        scanf("%s",rule); <br>

  <br>

} <br>

  <br>

char splashtoAscii() <br>

  <br>

{ <br>

  <br>

        char ch=0; <br>

  <br>

        rulePtr++; <br>

  <br>

        switch(rule[rulePtr])   { <br>

  <br>

                case 't':ch = '\t';break; <br>

  <br>

                case 'n':ch = '\n';break; <br>

  <br>

  <br>

                case 'v':ch = '\v';break; <br>

  <br>

                case 'b':ch = '\b';break; <br>

  <br>

                case 'r':ch = '\r';break; <br>

  <br>

                case 'f':ch = '\f';break; <br>

  <br>

                case '\\':ch = '\\';break; <br>

  <br>

                case '\'': ch = '\'';break; <br>

  <br>

                default: <br>

  <br>

                        if(isdigit(rule[rulePtr]))      { <br>

  <br>

                                ch = atoi(rule+rulePtr); <br>

  <br>

                                for(;isdigit(rule[rulePtr]); rulePtr++ ); <br>

  <br>

                                break; <br>

  <br>

  <br>

                        }else    break; <br>

  <br>

        } <br>

  <br>

        return ch; <br>

  <br>

} <br>

  <br>

  <br>

  <br>

char getChar() <br>

  <br>

{ <br>

  <br>

        char ch = rule[rulePtr]; <br>

  <br>

        switch(ch)      { <br>

  <br>

                case '\\': <br>

  <br>

                        return splashtoAscii(); <br>

  <br>

  <br>

                case '[':case ']':case '-': <br>

  <br>

                        printf("sorry, syntax error!\n"); <br>

  <br>

                        return 0; <br>

  <br>

                default: <br>

  <br>

                        rulePtr++; <br>

  <br>

                        return ch; <br>

  <br>

        } <br>

  <br>

} <br>

  <br>

  <br>

  <br>

void dealBracket(int &bit)//'[]' <br>

  <br>

{ <br>

  <br>

  <br>

        rulePtr++;//rule[rulePtr] = '['; <br>

  <br>

        int charLocate=0; <br>

  <br>

        for(;rule[rulePtr];)    { <br>

  <br>

                switch(rule[rulePtr])   { <br>

  <br>

                        case '-': <br>

  <br>

                                charLocate--; <br>

  <br>

                                rulePtr ++; <br>

  <br>

                                char start = charSet[bit][charLocate],end = get <br>

  <br>

                                for(;start<=end;start++)charSet[bit][charLocate <br>

  <br>

                                break; <br>

  <br>

                        case '\\': <br>

  <br>

  <br>

                        default: <br>

  <br>

                                charSet[bit][charLocate++] = getChar();//把这个 <br>

  <br>

                                break; <br>

  <br>

                } <br>

  <br>

                if(rule[rulePtr]==']')  {       rulePtr++;break; } <br>

  <br>

        } <br>

  <br>

        bit++; <br>

  <br>

} <br>

  <br>

void dealString(int &bit) <br>

  <br>

{ <br>

  <br>

        rulePtr ++;//skip the " <br>

  <br>

  <br>

        for(;bit<8&&rule[rulePtr]&&rule[rulePtr]!='"';bit++)    charSet[bit][0] <br>

  <br>

} <br>

  <br>

void dealIn(char * rule) <br>

  <br>

{ <br>

  <br>

        int bit=0; <br>

  <br>

        for(rulePtr=0;rule[rulePtr];)   { <br>

  <br>

                switch(rule[rulePtr])   { <br>

  <br>

                case '"': <br>

                        rulePtr ++;//skip the " <br>

                        for(;;bit++)    { <br>

                                if(bit>=8)      return; <br>

                                if(!rule[rulePtr])      return; <br>

                                if(rule[rulePtr]=='"') {rulePtr++;break;} <br>

                                charSet[bit][0] = rule[rulePtr++]; <br>

                        } <br>



                        break; <br>

                case '\\':getChar();bit++;break; <br>

                case '[':dealBracket(bit);break; <br>

                default: printf("sorry, syntax error!\n");break; <br>

                } <br>

                if(bit>=8)      break; <br>

        } <br>

} <br>

void genCode(char *buff,int level) <br>

{ <br>

        if(level>=8||charSet[level][0]==0)              { <br>

                        buff[level]=0; <br>

                        printf("%s\n",buff); <br>

                        return; <br>

        } <br>

        for( int i=0;charSet[level][i]&&i<256;i++)      { <br>

                        buff[level] = charSet[level][i]; <br>

                        genCode(buff,level+1); <br>

        } <br>

} <br>

  <br>

int main() <br>



{ <br>

        char word[10]; <br>

        memset(charSet,'\0',8*256); <br>

        init(); <br>

        dealIn(rule); <br>

        genCode(word,0);//use charset <br>

        return 1; <br>

} <br>

  <br>

-- <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="393.htm">上一层</a>][<a href="405.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -