Título: Duda stdarg.h en C Publicado por: jhonsc en 31 Enero 2012, 16:32 pm Buenas (de nuevo). Estoy intentando que un programa me coja unos argumentos fijos y luego, me pueda recoger un número indefinido de argumentos. He oído que sería:
Código Siento no ponerles el código completo, pero no tengo acceso a él en este momento. Título: Re: Duda stdarg.h en C Publicado por: rir3760 en 31 Enero 2012, 16:56 pm En C estándar no puedes definir la función principal de esa forma, debe ser "int main(int argc, char **argv) ...", "int main(void) ..." o equivalentes.
Mejor explica de una forma clara lo que debes hacer. Supongo es procesar los argumentos pasados a tu programa mediante la linea de comandos o bien crear un programa con una función (similar a printf/scanf) que reciba un numero variable de argumentos. Un saludo Título: Re: Duda stdarg.h en C Publicado por: jhonsc en 31 Enero 2012, 20:56 pm Hola, lo que quiero hacer es un mini kernel. Me funciona y todo (al nivel que escribe algo y punto). En la función printf necesito que me recoja, el texto, el color, y las variables. Por ejemplo, la llamaría así:
Código Ya tengo el printf pero o solo consigo elegir color, o solo coger variables. Cuando intento los dos a la vez, ERROR. Si sirve de algo, este es mi stdarg.h : Código Y el printf tendría esta forma (solo es parte): Código Ah y me equivoqué antes y puse "main" en vez de "printf", lo siento, pero ya dije que no tenía el código y me lié escribiendolo. Título: Re: Duda stdarg.h en C Publicado por: rir3760 en 1 Febrero 2012, 02:38 am No es necesario publicar el contenido del encabezado, en su lugar es mejor revisar un buen libro.
Un programa sencillo de ejemplo: Código
Los pasos son: 1) Declaras un objeto de tipo "va_list". 2) Ejecutas la macro "va_start" indicando el objeto declarado en el paso 1 y el ultimo parámetro con nombre (en este caso "num_args"). 3) Cada vez que debas procesar uno los argumentos utilizas la macro "va_arg" indicando el objeto declarado en el paso 1 y el tipo del objeto esperado (en nuestro caso siempre es de tipo "signed int"). 4) Una vez que termines de procesarlos ejecutas la macro "va_end". Un saludo Título: Re: Duda stdarg.h en C Publicado por: jhonsc en 1 Febrero 2012, 18:17 pm Muchas gracias. Pero como puedo pasar caracteres en vez de números, por ejemplo:
Código ?¿?¿ Título: Re: Duda stdarg.h en C Publicado por: rir3760 en 2 Febrero 2012, 03:37 am Un consejo: si todavía no manejas con soltura el lenguaje C deberías dejar eso para después.
Un problema con el ejemplo que pones es: ¿Como sabrá la función cuantos argumentos se pasaran en la llamada? La función printf se basa en la cadena de formato y el ejemplo que presente en mi mensaje anterior utiliza el ultimo argumento con nombre pero en tu ejemplo falta ese mecanismo. Por ultimo los caracteres literales no deben darte problemas ya que son enteros de tipo "signed int", mi ejemplo anterior con algunas modificaciones te puede servir de base. Un saludo Título: Re: Duda stdarg.h en C Publicado por: jhonsc en 2 Febrero 2012, 16:30 pm Ok! ya lo consegui! Gracias!!! Y eso.... soy demasiado impaciente, quiero aprender mucho, pero tengo poco tiempo xD. Gracias de nuevo.
|