自创的C语言枚举字符串算法
2013-05-31 23:07
253 查看
本人大一狗,才学完C语言。
本来是制作一个用字典法暴力破解hash值的程序,但是途中出现了问题,就是字典文件。8位纯字母的字典居然要1000多GB,无奈之下只能使用枚举法来循环字符串了。
当时是比赛的一道题目,由于需要每种可能的情况,所以要循环出N位所有可能性的纯字母字符串,就是从aaaaa~zzzzz所有的可能性。
我使用的是数组,每位用ASCII的值来循环达到目的,循环出数字后用类型转换转换成字符型,最终得出需要的字母。
#include<stdio.h>
int main()
{
int i,j,k,l,m;//定义循环变量
char word[6];//定义存放字符串的数组,大小因为字符串大小+1个,因为最后应该存放字符串结束符'\0'
for(i=97;i<=122;i++)//开始第一位循环 97和122代表ASCII码a-z
{
for(j=97;j<=122;j++)//第二位循环
{
for(k=97;k<=122;k++)//第三微循环
{
for(l=97;l<=122;l++)//第四位循环
{
for(m=97;m<=122;m++)//第五位循环
{
word[0]=(char)i;//需要类型转换,将ascii码转换为字符
word[1]=(char)j;
word[2]=(char)k;
word[3]=(char)l;
word[4]=(char)m;
word[5]='\0';//在数组最后插入'\0'结束符,否则会出现乱码
printf("%s\n",word);//输出字符串
}
}
}
}
}
return 0;
}
这是一个5位字符串的循环,老师说循环层数太多效率低,所以我标题说了效率低。。
for里面的97 和 122代表了ascii码表里的a和z,这表示每位字符从a循环到z,如果还有大写、数字、字符的话可以更改这里的数字为相应的ascii值。
本来是制作一个用字典法暴力破解hash值的程序,但是途中出现了问题,就是字典文件。8位纯字母的字典居然要1000多GB,无奈之下只能使用枚举法来循环字符串了。
当时是比赛的一道题目,由于需要每种可能的情况,所以要循环出N位所有可能性的纯字母字符串,就是从aaaaa~zzzzz所有的可能性。
我使用的是数组,每位用ASCII的值来循环达到目的,循环出数字后用类型转换转换成字符型,最终得出需要的字母。
#include<stdio.h>
int main()
{
int i,j,k,l,m;//定义循环变量
char word[6];//定义存放字符串的数组,大小因为字符串大小+1个,因为最后应该存放字符串结束符'\0'
for(i=97;i<=122;i++)//开始第一位循环 97和122代表ASCII码a-z
{
for(j=97;j<=122;j++)//第二位循环
{
for(k=97;k<=122;k++)//第三微循环
{
for(l=97;l<=122;l++)//第四位循环
{
for(m=97;m<=122;m++)//第五位循环
{
word[0]=(char)i;//需要类型转换,将ascii码转换为字符
word[1]=(char)j;
word[2]=(char)k;
word[3]=(char)l;
word[4]=(char)m;
word[5]='\0';//在数组最后插入'\0'结束符,否则会出现乱码
printf("%s\n",word);//输出字符串
}
}
}
}
}
return 0;
}
这是一个5位字符串的循环,老师说循环层数太多效率低,所以我标题说了效率低。。
for里面的97 和 122代表了ascii码表里的a和z,这表示每位字符从a循环到z,如果还有大写、数字、字符的话可以更改这里的数字为相应的ascii值。
相关文章推荐
- 展示一下Lucene+自创中文分词而做的电影、论坛搜索引擎
- C语言sizeof,pragma 和对齐详解(转贴精华加自创)
- 艺术来源于生活,高于生活,端午节期间自创一首打油诗
- 12岁小学生自创5家网站 曾获腾讯300元创业贷款
- 写在新工作之前的一个下雨天。HelloData 开源net Orm框架。自创,希望大家喜欢。
- 面试题之自创 实现两个整型大数(都是正数)的相减操作
- The connection to adb is down, and a severe error has occured. 解决方法汇总和自创方法
- Java从网络中请求获取JSon数据以及解析JSON数据----(自创,请注明)
- servlet request.setParameters 方法 自创
- 自创超级简洁的【分页查询】
- 十六进制字符串异或校验函数,自创
- Dockerfile-自创docker镜像(一)
- 英一中学生拒绝850万英镑出售自创新闻网
- C中位域结合对齐(pragma)的例子及解释(转贴部分精华贴加自创)
- 达人秀明天最后一场半决赛 小周立波带来自创段子
- 12岁小学生自创5家网站 曾获腾讯300元创业贷款
- 自创测试小技巧之vector的显示
- 面试题之自创 大数相加减
- [LeetCode] Reverse Linked List II @ Python [提供自创的示意图 Figure illustration]
- 代码练习,自创的加油记帐软件