reservar memoria para punteros en C

Iniciado por Ghalad, 24 Mayo 2010, 18:28 PM

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

08l00D

Cita de: Eternal Idol en 30 Mayo 2010, 19:51 PM
Si, pero cont arranca de 0 asi que:
lista = (char**)realloc(lista, sizeof(char*) * (cont+ 1));
Pero si lo incrementa previamente con "++count;" una linea antes...


@Ghalad Lo que no entiendo es que decis que es en C, usas funciones propias de la libreria de C, manejas las cadenas como se haria en C, y sin embargo hay varias partes de codigo que son propias de C++, no me parece muy logico pero bue..

Ghalad

Si, el codigo tiene que ser enteramente en C ansi pero me es mas facil para mostrarselo a ustedes en c++.

Eternal Idol

Cita de: 08l00D en 30 Mayo 2010, 19:55 PMPero si lo incrementa previamente con "++count;" una linea antes...

Estaba viendo el codigo original donde no lo hacia  ;D
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Ghalad

Te tengo otra pregunta, mi programa recive de un servidor una estructura compuesta por 4 char* de longitud (los primeros 3) menor a 512 bytes y la 4ta de tamaño variable entre 1 y nose.... 9999999..muchos bytes, depende de la persona que haya cargado la informacion en esa estructura, no importa. Y como ultima transferencia recibe un ".". El hecho es que mi programa hace un recv, un malloc y un strcpy para el 1er, 2do y 3er campo. Para el 4to hago algo asi:

Código (cpp) [Seleccionar]

memset(buffer, 0 ,512);
i = recv(buffer);
buffer[i]='\0';
while(strcmp(buffer, "."))
{
    estructura.m_cuerpo = (char*)realloc(estructura.m_cuerpo,  SIZEOF(CHAR)*STRLEN(BUFFER) +1);
    if(strlen(estructura.m_cuerpo) > 0)strcat(estructura.m_cuerpo, buffer);
    else strcpy(estructura.m_cuerpo, buffer);
    memset(buffer, 0, 512);
    i =recv(buffer);
    buffer[i]='\0';
}


Lo que estoy preguntando es, de que forma puedo hacer ese WHILE para que vaya agrandando la variable hasta que reciba del socket un ".". Y esta mal el tamaño del realloc, lo se jajaj.
Todo esto forma parte de un sistema que estoy haciendo para un trabajo practico, es un servidor de noticias que utiliza el protocolo nntp (un toke simplificado) esos 4 campos serian los campos de un articulo de noticias ID, groupname, head y body. Los primeros 3 basta con 512 bytes (1 lectura de socket) y el body puede llegar a ser mas grande, el tema es como agrando correctamente el body de mi estructura?