[C] Generador de diccionarios(Comando)

Iniciado por mr.blood, Mayo 19, 2013, 10:38:07 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 19, 2013, 10:38:07 AM Ultima modificación: Octubre 28, 2013, 09:18:52 AM por Expermicid
Bueno, sin mas, un codigo como el anterior pero un poco mas complejo ;).

Metodo de uso
Código: php
 dic [longitud del diccionario] (opcional)[caracteres del diccionario]


Si no se especifica el 2º parametro, se utilizaran los que vienen por defecto osea, "abcdefghijklmnopqrstuvwxyz".

Sin mas explicacion, el codigo.

Código: c
#include <stdio.h>

#include <stdlib.h>

#include <string.h>



int main(int argc, char *argv[])

{ if(argc < 2 || !strcmp(argv[1], "-h")) //Texto de ayuda

{

puts("HELP: \nsintax: dic [len_dic] (optional)[list]");

return 1;

}



int len=0, cont=atoi(argv[1]), *cad, i, ver=1; //Declaracion

cad=(int *)malloc(sizeof(int) * atoi(argv[1])); //Reserva de memoria para un array int

memset((int *)cad,0,sizeof(int) * atoi(argv[1]));//Inicializamos el array a 0

char *lst;//Declaracion de la lista que contendra las posibilidades



if(argc < 3) //Comprobamos el numero de parametros introducidos para hacer una cosa u otra

{

lst=(char *)malloc(strlen("abcdefghijklmnopqrstuvwxyz")+1);

strcpy(lst, "abcdefghijklmnopqrstuvwxyz");

}

else if(argc == 3)

{



lst=(char *)malloc(strlen(argv[2])+1);

if(!lst)

{

puts("No se pudo reservar la memoria");

return 1;

}

strcpy(lst, argv[2]);

}



while(len+1<=cont)//Comienza el ciclo de generacion

{

if(lst[cad[0]]!='\0')

{

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

{

putchar(lst[cad[i]]);

}

putchar('\n');

}

if(lst[cad[0]]!='\0')

{

cad[0]++;

}

else

{

            ver=0;

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

{

if(lst[cad[i]]=='\0')

{

cad[i]=0;

cad[i+1]++;

}

else

{

ver=1;

}

}

}

if(ver==0)

{

len++;

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

{

cad[i]=0;

}

ver=1;

}

}

free(lst);

free(cad);

return 0;

}


Sa1uDoS

P.D.: Mejorado para Luxur, el SO de Taul.