comportamento printf em C / C ++

raciocinar sobre o comportamento do programa pode ser complicado às vezes. printffrequentemente é muito útil obter algum tipo de vestígio do que acontece.

O que eu não sabia há muito tempo é que o stdoutstream está armazenado em buffer!

Isso significa que seu programa pode terminar antes que toda a saída seja impressa.

Uma solução alternativa que ouvi de John Hinke (da ESRLabs ): use fprintfe configure-o com stderr.

fprintf(stderr, "fuck yeah!");

Acabei desativando o buffer de stdout:

setbuf(stdout, 0);

dos documentos:

Especifica o buffer a ser usado pelo fluxo para operações de E / S, que se torna um fluxo totalmente armazenado em buffer. Ou, alternativamente, se buffer for um ponteiro nulo, o armazenamento em buffer é desabilitado para o fluxo, que se torna um fluxo sem buffer.