Su Ubuntu e Debian questo codice mi restituisce un file vuoto perché la printf non ha effetto:
codice:
#include<stdio.h>

int main()
{
        fclose(stdout);
        stdout = fopen("/home/federico/provaout", "w");
        printf("Prova\n");
        return 0;
}
con questo la printf funziona:

codice:
#include<stdio.h>

int main()
{
        int test;
        fclose(stdout);
        stdout = fopen("/home/federico/provaout", "w");
        test = printf("Prova\n");
        return 0;
}
So che per redirigere stdout si dovrebbe usare freopen ma su linux dovrebbero essere equivalenti.
Ma ciò che non capisco è come mai assegnando semplicemente il risultato della printf a test la stringa venga scritta mentre non assegnandolo NO! Mi sembra assurdo..