Autor
|
Tema: Concatenar cadenas (Leído 4,373 veces)
|
caronte80
Desconectado
Mensajes: 3
|
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. /*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..
|
|
|
En línea
|
|
|
|
avesudra
Desconectado
Mensajes: 724
Intentando ser mejor cada día :)
|
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
Mensajes: 438
|
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#msg1765314asi 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=strncatno 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
Mensajes: 3
|
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
Mensajes: 724
Intentando ser mejor cada día :)
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Concatenar enteros.
Programación C/C++
|
Nanoc
|
3
|
9,494
|
12 Junio 2010, 01:24 am
por Littlehorse
|
|
|
Problema al concatenar cadenas
PHP
|
Feedeex
|
4
|
4,800
|
13 Mayo 2011, 12:49 pm
por Feedeex
|
|
|
problemas con concatenar cadenas
Programación C/C++
|
d91
|
2
|
2,139
|
15 Abril 2014, 15:53 pm
por d91
|
|
|
Concatenar cadenas con memoria dinámica en lenguaje C.
Programación C/C++
|
NOB2014
|
3
|
4,537
|
19 Junio 2016, 19:22 pm
por AlbertoBSD
|
|
|
Concatenar cadenas o string verticalmente
Programación General
|
Flamer
|
6
|
4,600
|
15 Julio 2017, 13:58 pm
por ivancea96
|
|