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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


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

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Problema con for y array de cadenas.
« en: 6 Febrero 2014, 18:04 pm »

Hola, tengo el siguiente código en el que quiero meter en la variable request una cadena constante y la cadena de cada uno de los elementos de mi array de cadenas. Para ello itero mediante un for y hago uso de sprintf, el problema es que solo me lo hace una vez, para el primer elemento de mi array. El array ya esta inicializado con cadenas previamente mediante la funcion getcadenas(). Os dejo el código:

Código:
char request[45555];
char **probes;
int i;

probes=getcadenas();


for(i=0; i<5;i++){
sprintf(request,"%sConstante", probes[i]);
printf("%s", request);
}

Espero me puedan ayudar :)


En línea

jomag

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problema con for y array de cadenas.
« Respuesta #1 en: 6 Febrero 2014, 20:23 pm »

Bueno, pues ya he resuelto el problema :¬¬, me ha costado días pero me he dado cuenta cuando os pido ayuda, la historia se repite. El problema es que solo había reservado espacio para cada columna del array de cadenas, pero no para cada fila. Una vez reservado espacio no hay problema  ;-)


En línea

Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: Problema con for y array de cadenas.
« Respuesta #2 en: 7 Febrero 2014, 01:27 am »

Bueno, .... no entendí exactamente lo que quieres indicar con el mensaje, pero me imagino (porque también he trabajado con eso y me ha dado dolores de cabeza) que el problema puede estar efectivamente en la asignación de memoria para probes.

No se cómo lo estás haciendo pero si por ejemplo el probes debe ser un array de digamos 10 cadenas, cada una con capacidad para 50 caracteres (más el nulo de terminación), hay que hacer:

Código
  1. probes = (char **) malloc( 10 * sizeof (char *) );
  2. if ( probes == NULL ) return;      /* comprueba integridad */
  3. for ( i = 0; i < 10; i++ ) {
  4.    probes[i] = (char *) malloc( 51 * sizeof(char) );
  5.    if ( probes[i] == NULL ) return;
  6. }
  7.  

Es decir, reservas espacio en probes para 10 strings, o sea, 10 punteros a char. Es bueno siempre verificar si malloc pudo asignar efectivamente memoria, probando si el puntero devuelto es distinto a NULL. De lo contrario, la asignación fue fallida y debes salir o reiniciar el programa. [de otro modo se puede producir una "fuga de memoria" y ya empezarás a parecerte a los programadores de Microsoft, jeje  :laugh:]

Luego, en cada elemento del array probes debes colocar un puntero (devuelto por malloc) a una zona de memoria con espacio para 51 elementos de tipo char, es decir, una cadena con espacio para 50 caracteres más el nulo de terminación (no se te olvide el espacio para el nulo). De nuevo, verifica el retorno de malloc después de cada llamada a la misma.

Ahora sí puedes empezar a llenar el array probes con cadenas con (en este caso) 10 cadenas de longitud 50 cada una. En tu caso, si por casualidad los elementos de probes no estaban correctamente inicializados, y eran simplemente punteros NULL, esa es la razón por la que sprintf no escribió nada en request !!
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
jomag

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problema con for y array de cadenas.
« Respuesta #3 en: 7 Febrero 2014, 02:18 am »

Si eso es lo que decía, lo único que me pasaba es que no había reservado espacio para los punteros a char y si para cada uno de los elementos char, es decir había hecho probes = (char *) malloc( 51 * sizeof(char) ); pero no probes = (char **) malloc( 10 * sizeof (char *) );. Finalmente me di cuenta, de todos modos muchas gracias, no había contemplado la posibilidad de comprobar si malloc da error, y como no me quiero parecer a Microsoft lo haré, muchas gracias! :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Fallo de segmentacion con fgets y Array de cadenas. « 1 2 »
Programación C/C++
samur88 12 7,061 Último mensaje 7 Marzo 2011, 00:37 am
por samur88
Problema con cadenas
Programación C/C++
Uknow 2 2,279 Último mensaje 11 Diciembre 2011, 23:37 pm
por Uknow
[AYUDA] Separar array en cadenas
PHP
Graphixx 0 1,539 Último mensaje 8 Mayo 2013, 03:06 am
por Graphixx
Array de cadenas por teclado en C
Programación C/C++
Raymond Carver 6 3,047 Último mensaje 12 Junio 2014, 02:50 am
por rir3760
problema con array de punteros a cadenas « 1 2 »
Programación C/C++
MessageBoxA 12 5,430 Último mensaje 11 Julio 2014, 21:39 pm
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines