Hola a todos.
Hace un tiempo les pregunte acerca de como hacer un scanf personalizado.
Me dijeron como podia leer los datos correctamente con fgets y sscanf. Hasta aqui ok.
Bueno, hice la función y me dio por iniciar la variable referenciada dentro de la función pero no me lo hace bien.
Les enseño el codigo y les explico:
void myscanf(const char *formato,...)
{
char bufferinterno[80];
int vars=0;
/* codigo para contar los argumentos de entrada
basicamente cuento los % para saber las variables
que tengo que leer
(almacenado en vars)
*/
/* Inicio el buffer interno */
memset(bufferinterno
,0,sizeof(bufferinterno
));
/* intento iniciar la variable referenciada */
memset(*(&format
+vars
),0,sizeof(*(&format
+vars
)));
}
Lo que me ocurre es que cuando hago esto
char buffer[50];
myscanf("%s",buffer);
El memset de la linea 19 no inicia correctamente el buffer porque *(&format+vars) apunta al primer caracter del buffer y no hay forma de saber cuál es su tamaño para iniciarlo correctamente.
Hay alguna forma de saber cuanto ocupa la variable referenciada o el unico remedio seria pasarle a la función su tamaño para iniciarla correctamente ?
O inciarla antes de pasarsela a la función.
Gracias