Buenas!!
Estoy haciendo un pequeño servidor WEB en C, algo basico y como ejercicio, ya que este algo pulido dejare el link al codigo por aqui.
El detalle que me encuentro es que quiero crear una función de argumentos variables asi como el printf donde le ahorre al usuario "final" (
) el reservar memoria para el buffer de respuesta al cliente. para ello solo creare una función llamada "server_print" donde el usuario colocara su formato de cadena y las variables que el quiera. Y que la función haga el trabajo duro...
session es un contenedor de variables auxiliares y ese de momento, se puede obviar...
void server_print(struct peticion *session,char *format,...) {
char *buffer = NULL;
int X;
va_list args;
vsnprintf(buffer,X,format, args);
//realizar operaciones sobre session...
}
Lo que me interesa saber es el cuando debe de valer X para reservar esa cantidad de memoria exacta.. el detalles esta en que puedo ahórrame el "pensar" y asignar MUCHA memoria por cada argumento del programa, pero el detalle esta en que:
¿Que pasa si no alcanza?
Quiero tener un programa eficiente que no malgaste memoria y sea rápido...
Se me ocurre buscar en la cadena de formato por cada % que se encuentre y por ejemplo si es un Entero reservar solo 12 bytes mas, si es cadena sacar el strlen del argumento en cuestion, si es %l dejar sobre 30 bytes mas y asi...
¿Como procederían ustedes?
Saludos!