Originariamente inviato da printfede
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..
Ciao, lo sapevo già grazie, credimi ho fatto tante prove sulla cosa e ancora non sono giunto a nessuna conclusione, ho chiesto in diversi forum e nessuno mi ha saputo dare una risposta soddisfacente, mi chiedo se non possa essere un bug, di gcc ad esempio. Grazie comunque per l'interessamento ciao.