Autor
|
Tema: [PROBLEMA] Concatenar variables. [SOLUCIONADO] (Leído 8,310 veces)
|
Siquillote
Desconectado
Mensajes: 66
VB, C, HTML, POO, PHP, MySQL, CSS, XML, JS
|
¡Hola! este es mi primer mensaje de ayuda y espero que me ayuden. Soy nuevo en esto de C y C++ pero ya he hecho una simple calculadora y tal. He decidido crear un prorama que sirve para generar códigos (No diré para que por si acaso) y resulta que a la hora de hacer un rand() me lo muestra todo correctamente pero mi duda es como mediante de ese rand y for poder guardarlo en una variable. Es decir, digamos que tengo este códigillo: /* Codigo anterior..... */ original = "HF72jia6Gd="; for(inicio=1;inicio<=15;inicio++){ aleatorio = (rand() % strlen(original)); cout<<original[aleatorio]; } /* Despues mas código... */
Como veis, ese código, realiza un numero aleatorio 15 veces y cada una de ellas, elige una letra de esa cadena para luego ir mostrandolas una por una asi que de momento no hay problema pero si hago esto (Que sirve para concatenar variables): original = "HF72jia6Gd="; for(inicio=1;inicio<=15;inicio++){ aleatorio = (rand() % strlen(original)); sprintf(despues, "%s%s", despues, original[aleatorio]); }
Si hago eso, no me concatena o une el valor realizado a la cadena si no que se congela el programa y se cierra solo. ¿Que necesito que pase? Necesito que cada letra generada por cada vez, se una a la variables "despues". Por ejemplo, ese codigo devuelve a la variable despues sería: despues = "a"; pero luego me devuelve b por lo que esa variable pasaría a ser: despues = "ab" y así sucesivamente... ¿Me han entendido? Gracias por su atención.
|
|
« Última modificación: 27 Diciembre 2010, 18:26 pm por Siquillote »
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola Creo que tu problema viene en la primera iteración del bucle, porque la variable "despues" está vacía y el programa espera un string que no existe. Prueba a hacerlo así original = "HF72jia6Gd="; for(inicio=0;inicio<15;inicio++){ aleatorio = (rand() % strlen(original)); despues[inicio]=original[aleatorio]); }
Pero no sé si ese es el problema. Esperemos que alguien que sepa nos saque de la duda. Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
Siquillote
Desconectado
Mensajes: 66
VB, C, HTML, POO, PHP, MySQL, CSS, XML, JS
|
Hola Creo que tu problema viene en la primera iteración del bucle, porque la variable "despues" está vacía y el programa espera un string que no existe. Prueba a hacerlo así original = "HF72jia6Gd="; for(inicio=0;inicio<15;inicio++){ aleatorio = (rand() % strlen(original)); despues[inicio]=original[aleatorio]); }
Pero no sé si ese es el problema. Esperemos que alguien que sepa nos saque de la duda. Saludos ¡Gracias!. Con lo que tu me has pasado, lo guarda todo el la variable despues pero si haces un cout<<despues no muestra nada pero si haces un cout<<despues[0]<<despues[1]... si que va mostrando letra por letra. Con el ejercicio que estoy haciendo creo que esto me valdrá, muchas gracias satu por tu ayuda, luego te comento el resultado si he podido lograrlo. ¡'Gracias de nuevo!
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola Me alegro que te haya sevido. Ahora para poder imprimir y demás debes finalizar el string con el carácter '\0'. Debes poner esto justo después del bucle: despues[inicio]='\0';
y así te funcionará perfectamente Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
Siquillote
Desconectado
Mensajes: 66
VB, C, HTML, POO, PHP, MySQL, CSS, XML, JS
|
Hola Me alegro que te haya sevido. Ahora para poder imprimir y demás debes finalizar el string con el carácter '\0'. Debes poner esto justo después del bucle: despues[inicio]='\0';
y así te funcionará perfectamente Saludos ¿Como como? Eso no lo he entendido. Por cierto, parece que todo va bien de momento.
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Pues verás, las cadenas de caracteres deben terminar con este carácter '\0', ya que cuando quieres hacer operaciones con ellas (con las cadenas), como por ejemplo imprimir, las funciones paran cuando encuentran ese caracter, por eso te dije que justo después del bucle tienes que poner esa instrucción, para finalizar tu cadena. Si no lo haces, la función (en este caso cout) no te funciona, aunque también podría haber imprimido "basura" que hay en tu memoria hasta encontrarse con '\0'
No sé si lo entiendes o no, me cuesta explicarme con claridad.
Digamos que sería como el punto en una frase.
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
Siquillote
Desconectado
Mensajes: 66
VB, C, HTML, POO, PHP, MySQL, CSS, XML, JS
|
Pues verás, las cadenas de caracteres deben terminar con este carácter '\0', ya que cuando quieres hacer operaciones con ellas (con las cadenas), como por ejemplo imprimir, las funciones paran cuando encuentran ese caracter, por eso te dije que justo después del bucle tienes que poner esa instrucción, para finalizar tu cadena. Si no lo haces, la función (en este caso cout) no te funciona, aunque también podría haber imprimido "basura" que hay en tu memoria hasta encontrarse con '\0'
No sé si lo entiendes o no, me cuesta explicarme con claridad.
Digamos que sería como el punto en una frase.
Muchas gracias hombre por la explicación;). Y también muchas gracias por solucionarme la duda aunque con lo que me dijiste tube que hacer un algoritmo un poco guarro jajaja. ¿Hay alguna manera de agradecertelo como con karmas o algo así?.
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
¿Hay alguna manera de agradecertelo como con karmas o algo así?. Con esto vale Muchas gracias hombre por la explicación;). Y también muchas gracias por solucionarme la duda
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
Siquillote
Desconectado
Mensajes: 66
VB, C, HTML, POO, PHP, MySQL, CSS, XML, JS
|
Con esto vale Saludos jajajaj Gracias igualmente
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[batch] problema con variables y espacios[Solucionado]
Scripting
|
corax
|
4
|
14,193
|
10 Octubre 2009, 19:12 pm
por corax
|
|
|
[Batch] Problema con las variables [Solucionado]
« 1 2 »
Scripting
|
DA KILLER
|
17
|
13,060
|
19 Mayo 2010, 03:54 am
por DA KILLER
|
|
|
[Solucionado] Problema con variables de session
PHP
|
Wofo
|
4
|
10,063
|
18 Junio 2011, 03:29 am
por Wofo
|
|
|
Cómo concatenar variables de diferentes tipos? (C++)
Programación C/C++
|
1mpuls0
|
7
|
13,223
|
1 Abril 2014, 00:45 am
por amchacon
|
|
|
[SOLUCIONADO] Problema al intentar concatenar ficheros binarios.
Programación C/C++
|
SARGE553413
|
1
|
2,256
|
10 Julio 2014, 02:02 am
por SARGE553413
|
|