elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Concatenar cadenas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Concatenar cadenas  (Leído 3,647 veces)
caronte80

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Concatenar cadenas
« en: 31 Agosto 2012, 22:04 pm »


  Hola a todos

 Le estoy dando vueltas a un codigo en C  que quiero que escriba combos en un archivo con este formato:   aaaaaa:aaaaaa
                aaaaab:aaaaab.....

pero en realidad la salida es esta:  aaaaaa:aaaaaa
                                                   aaaaab:aaaaaa
                                                   aaaaac:aaaaaa......

     ALguien podria ojear el codigo y darme alguna sugerencia...???
  Gracias de antemano.
Código:
/*DICCIONARIO*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int desde;
int hasta;



void calcula (void);


int main()
{
int ndopcion;

printf("\n\n\t\t\t\tMENU\n\n");
printf("\n\t\t1\tNumeroS\n\t\t2\tMayusculaS\n\t\t3\tMinusculaS\n\t\t4\tVaciO\n\t\t5\tVaciO\n");
printf ("\nIntroduza numero de opcion: ");
scanf (" %d" ,&ndopcion);
while(getchar()!='\n');

switch (ndopcion)
{
case 1:
{
desde=48;
hasta=57;
calcula();
}
break;

case 2:
{
desde=65;
hasta=90;
calcula();

}
break;

case 3:
{
desde=97;
hasta=122;
calcula();

}
break;

case 4:
{

}
break;

case 5:
{

}
break;
}

}

void calcula (void)
{

int a, b, c, d, e, f;
char clv[14];
char combo[7];

char nombre[20];



printf("\nIntroduzca nombre del archivo de salida: ");
gets(nombre);
while(getchar()!='\n');
 
FILE *hoja1;
hoja1 = fopen (nombre , "wt");
if (hoja1 == NULL)
{
printf ("No se ha podido crear el fichero");
}
else

{


for (a=desde; a<= hasta; a++)
{

clv[0] = a;
combo[0]=a;
for (b=desde; b <= hasta; b++)
{
clv[1] = b;
combo[1]=b;
for (c=desde; c<= hasta; c++)
     {
clv[2] = c;
combo[2]=c;
for (d=desde; d<= hasta; d++)
{
clv[3] = d;
combo[3]=d;
for (e=desde; e<=hasta; e++)
{
clv[4] = e;
combo[4]=e;

for (f=desde; f<= hasta; f++)
{
clv[5] = f;
combo[5]=f;
clv[6]=':';
combo[6]='\n';
 
strcat(clv, combo);


fwrite (clv, sizeof(clv), 1, hoja1);
printf("\n%s",clv);
}
     }
  }
}
}
}
}
fclose(hoja1);
printf("\n%s", clv);
printf("\nArchivo cerrado\n\n ");


}
P.D: Notese que soy un poco novato.. :rolleyes:


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Concatenar cadenas
« Respuesta #1 en: 31 Agosto 2012, 22:10 pm »

Una cosa ,antes que nada bienvenido y en cuanto al problema eso te va a ocupar muchísimo tiempo en hacerlo y muchísimo espacio. De todas maneras ahora lo miro y me puedes responder unas cuantas preguntas , desde donde a donde tiene que ir el diccionario , como tiene que ir , en fín. que tiene¿ que ir hasta el aaaaaa:aaaaaa hasta el ZZZZZZ:ZZZZZZ ?


En línea

Regístrate en
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Concatenar cadenas
« Respuesta #2 en: 31 Agosto 2012, 22:12 pm »

hola, me he mirado tu codigo por encima y la verdad creo que andas un poco liado... normal si estas empezando claro.

te aconsejo que te mires este tema bastante completo donde varios usuarios y yo escribimos distintas maneras de hacer un generador de diccionarios.

http://foro.elhacker.net/programacion_cc/como_hacer_un_generador-t366597.0.html;msg1765314#msg1765314

asi que solo te haria falta mirarte eso, y luego usar la funcion strncat (mejor esta que strcat, ya que con esta ultima no puedes limitar el numero de caracteres a añadir a la otra cadena y te puede dar problemas por gestion de memoria).

http://c.conclase.net/librerias/?ansifun=strncat

no se si conoceras esta pagina, pero por si acaso acuerdate de ella, ya que es muy util para mirar toda clase de funciones de librerias estandar, con explicacion y ejemplos.

un saludo!

edito: modifico para recalcar lo que ha dicho avesudra en cuanto al tamaño del fichero. fijate que en el tema que te he pasado, ahi intentabamos hacer las combinaciones desde AAAAAAAA hasta ZZZZZZZZ. y creo recordar que solo intentando hacerla de 7 caracteres, acabe interrumpiendo el codigo ya que llevaba una media hora y unos 32GB de tamaño.
« Última modificación: 31 Agosto 2012, 22:14 pm por xiruko » En línea

caronte80

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Concatenar cadenas
« Respuesta #3 en: 31 Agosto 2012, 22:41 pm »

Una cosa ,antes que nada bienvenido y en cuanto al problema eso te va a ocupar muchísimo tiempo en hacerlo y muchísimo espacio. De todas maneras ahora lo miro y me puedes responder unas cuantas preguntas , desde donde a donde tiene que ir el diccionario , como tiene que ir , en fín. que tiene¿ que ir hasta el aaaaaa:aaaaaa hasta el ZZZZZZ:ZZZZZZ ?

  EL tiempo y el espaco no son problema avesudra.Me lo tomo como un ejercicio para adquirir soltura con el lenguaje.

 El dicionario, en origen creaba archivos de palabras de 8 digitos  a elegir en minusculas mayuscula o numeros, y lo hacia con los FOR y la variable clv[]. Funcionaba.

Lo he modificado para que la salidsa sea en forma de combo: aaaaaa:aaaaaa, pero con solo 6 digitos. añadiendo ":" en medio y "\n" al final para que en el archivo aparezca un combo por linea.

Todo funciona asi,de no ser porque los 6 digitos a continuacion de ":" no cambian nunca cuando a mi entender deberian. Asi aparece en el archivo de txt:


 aaaaaa:aaaaaa
aaaaab:aaaaaa
aaaaac:aaaaaa
aaaaad:aaaaaa
aaaaae:aaaaaa
aaaaaf:aaaaaa
aaaaag:aaaaaa
aaaaah:aaaaaa
aaaaai:aaaaaa
aaaaaj:aaaaaa
aaaaak:aaaaaa
aaaaal:aaaaaa
aaaaam:aaaaaa
aaaaan:aaaaaa
aaaaao:aaaaaa
aaaaap:aaaaaa
aaaaaq:aaaaaa
aaaaar:aaaaaa
aaaaas:aaaaaa
aaaaat:aaaaaa
aaaaau:aaaaaa
aaaaav:aaaaaa
aaaaaw:aaaaaa
aaaaax:aaaaaa
aaaaay:aaaaaa
aaaaaz:aaaaaa
aaaaba:aaaaaa
aaaabb:aaaaaa
aaaabc:aaaaaa
    

Y si, la idea es que termine en: zzzzzz:zzzzzz  pero en minusculas, si te fijas en el codigo solo usa las minusculas..
« Última modificación: 31 Agosto 2012, 22:43 pm por caronte80 » En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Concatenar cadenas
« Respuesta #4 en: 31 Agosto 2012, 23:38 pm »

Mmmm vale , de todas maneras mira lo que te ha dicho xiruko que te ayudará , el código es muy complicado de entender :/ (como no lo he hecho yo y no está bien comentado...) un consejo para esto es que pongas nombres descriptivos a las variables, no importa que sean largos... En cuanto a lo de realizar el combo repite dos veces el algoritmo y une las cadenas resultantes.
En línea

Regístrate en
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Concatenar enteros.
Programación C/C++
Nanoc 3 9,194 Último mensaje 12 Junio 2010, 01:24 am
por Littlehorse
Problema al concatenar cadenas
PHP
Feedeex 4 4,543 Último mensaje 13 Mayo 2011, 12:49 pm
por Feedeex
problemas con concatenar cadenas
Programación C/C++
d91 2 1,922 Último mensaje 15 Abril 2014, 15:53 pm
por d91
Concatenar cadenas con memoria dinámica en lenguaje C.
Programación C/C++
NOB2014 3 4,188 Último mensaje 19 Junio 2016, 19:22 pm
por AlbertoBSD
Concatenar cadenas o string verticalmente
Programación General
Flamer 6 3,813 Último mensaje 15 Julio 2017, 13:58 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines