“printf” no imprime una cadena inmediatamente [duplicate]

2 minutos de lectura

printf no imprime una cadena inmediatamente duplicate
Andrea Sylar Solla

Posible duplicado:

¿Por qué printf no se vacía después de la llamada a menos que haya una nueva línea en la cadena de formato? (C ª)

Tengo un código como este:

printf("Starting nets allocation...");
while(...)
{
    ...some operations...
}
puts("DONE");

El código debe imprimir inmediatamente la cadena “Iniciando asignación de redes…” luego, después del bucle, debe imprimir “HECHO”.

En su lugar, el programa realiza primero el bucle y luego imprime la cadena “Iniciando asignación de redes… HECHO” ¿por qué sucede? ¿Cómo puedo resolver esto?

1647626045 576 printf no imprime una cadena inmediatamente duplicate
pb2q

El flujo de salida stdout está almacenado en el búfer de forma predeterminada, por lo que si desea una salida inmediata, deberá vaciar la secuencia de salida, utilizando fflush – o hacer que se imprima una nueva línea en el printf:

printf("Starting nets allocation...");
fflush(stdout);    

O:

printf("Starting nets allocation...\n");

Tenga en cuenta que también puede controlar el almacenamiento en búfer en un nivel de puntero de archivo usando el setbuf función de stdio.h:

setbuf(stdout, NULL);

El segundo argumento a setbuf es un búfer proporcionado por la persona que llama que se utilizará para almacenar en búfer la salida a la secuencia. Pasar NULL indica que se deshabilitará el almacenamiento en búfer y es equivalente a:

setvbuf(stdout, NULL, _IONBF, 0);

que también deshabilita el almacenamiento en búfer en la secuencia especificada.

Ver documentos para setbuf aquí.

  • ¡fflush() es lo que estaba buscando! ¡Gracias!

    – Andrea Sylar Solla

    27 de agosto de 2012 a las 21:54


la salida a stdout está almacenado en búfer, así que agregue

fflush(stdout); 

después de la printf llamada para vaciar el contenido. Por lo general, agregar un carácter de nueva línea también vacía el búfer, pero eso puede no ser deseable en su caso.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad