¿Hay un límite en el número de valores que se pueden imprimir con una sola llamada de printf?

¿La cantidad de valores impresos por printf depende de la memoria asignada para un progtwig específico o puede seguir imprimiendo los valores?

El estándar C documenta el número mínimo de argumentos que un comstackdor debe aceptar para una llamada de función:

C11 5.2.4.1 Límites de traducción

La implementación podrá traducir y ejecutar al menos un progtwig que contenga al menos una instancia de cada uno de los siguientes límites:

  • 127 argumentos en una llamada de función

Por lo tanto, debería poder pasar al menos 126 valores a printf después de la cadena de formato inicial, asumiendo que la cadena de formato está construida correctamente y es consistente con los argumentos reales que siguen.

Si la cadena de formato es una cadena literal, el estándar garantiza que el comstackdor puede manejar literales de cadena de al menos 4095 bytes y líneas de origen de al menos 4095 caracteres. Puede usar la concatenación de cadenas para dividir el literal en varias líneas de origen. Si utiliza una matriz de caracteres para la cadena de formato, no existe tal limitación.

El único límite ambiental documentado para la familia de funciones printf es este:

El número de caracteres que puede producir cualquier conversión individual será de al menos 4095

Esto hace que el comportamiento del formato %10000d en el mejor de los casos en la implementación, pero el estándar no %10000d nada.

Por lo tanto, una combinación de comstackdor / biblioteca compatible debe aceptar al menos 126 valores para printf , ya sea que su entorno permita que aún más argumentos puedan definirse por la implementación y documentarse como tales, pero no están garantizados por la norma.