¿Cómo puedo escribir (si es posible ...) una función que toma un número desconocido de parámetros en C99 (el tipo de retorno es constante)?Función con un número desconocido de parámetros en C
Respuesta
Sí puede hacerlo en C usando lo que se conoce como funciones variadic. Las funciones estándar printf()
y scanf()
hacen esto, por ejemplo.
Ponga las elipsis (tres puntos) como el último parámetro en el que desea que 'el número variable de parámetros sea.
Para acceder a los parámetros incluyen la cabecera <stdarg.h>
:
#include <stdarg.h>
Y entonces usted tiene un tipo especial va_list
que le da la lista de argumentos pasados, y se puede utilizar los va_start
, va_arg
y va_end
macros para iterar a través de la lista de argumentos.
Por ejemplo:
#include <stdarg.h>
int myfunc(int count, ...)
{
va_list list;
int j = 0;
va_start(list, count);
for(j=0; j<count; j++)
{
printf("%d", va_arg(list, int));
}
va_end(list);
return count;
}
Ejemplo llamada:
myfunc(4, -9, 12, 43, 217);
un ejemplo completo se puede encontrar en Wikipedia.
El parámetro count
en el ejemplo le dice a la función llamada cuántos argumentos se pasan. El printf()
y el scanf()
lo encuentran a través de la cadena de formato, pero también puede hacerlo un argumento simple count
. Algunas veces, el código usa un valor centinela, como un entero negativo o un puntero nulo (ver execl()
por ejemplo).
El formato con el ejemplo existente:
int yourFunc (int abc, ...) {
//your code here
}
Eso es solo un prototipo. –
Eso ya no es solo un prototipo, pero no es una explicación completa de cómo trabajar con argumentos de longitud variable. –
- 1. Función o método con un número desconocido de parámetros
- 2. C++ Punteros de función con un número desconocido de argumentos
- 3. PDO vinculan un número desconocido de parámetros?
- 4. Función Ruby con número ilimitado de parámetros
- 5. Parámetros de función número máximo
- 6. R: crear una matriz con un número desconocido de filas
- 7. Función de PHP con un número ilimitado de parámetros
- 8. Pasando un delegado con dos parámetros en función de parámetros
- 9. ¿Cómo se comprimiría un número desconocido de listas en Python?
- 10. Método que acepta n Número de parámetros en C#
- 11. Intersecta un número desconocido de matrices en PHP
- 12. nueva Función() con parámetros variables
- 13. ¿Es posible leer un número desconocido de líneas desde la consola en C#?
- 14. Función de llamada con un número variable de parámetros en Matlab
- 15. C: función de señal (parámetros?)
- 16. ¿Cómo puedo representar un número desconocido de columnas en SSRS?
- 17. Python: descomprimir a un número desconocido de variables?
- 18. Punteros de función con parámetros predeterminados en C++
- 19. Número máximo de parámetros en la declaración de función
- 20. ¿Cuál es la mejor forma de pasar un número desconocido de cadenas a una función en java
- 21. Dividir una cadena con un número desconocido de espacios como separador en Python
- 22. Convierte std :: cadena a función existente con parámetros en C++
- 23. C++ llamar a la función lua con parámetros variables
- 24. ¿Cómo puedo configurar todos los bits en '1' en un número binario de un tamaño desconocido?
- 25. Flex ¿Cómo llamar a una función con un número variable de parámetros?
- 26. Creando una matriz de tipo desconocido. C#
- 27. Función con número variable de argumentos
- 28. Conocer el número de parámetros de una función pasada (erlang)
- 29. PHP: Obtener número de parámetros de una función requiere
- 30. div con un ancho desconocido
¿Se refiere a una función diferente? Me gusta 'printf'? ¿Has buscado ''? –
Potatoswatter
Obtenga un libro en C o busque cosas como esta en línea. –
posible duplicado de [pasar la cantidad variable de argumentos] (http://stackoverflow.com/questions/3836272/passing-variable-number-of-arguments) – Potatoswatter