2015-12-17 11 views
6

Questo mi è appena successo durante il test di una parte di un programma più grande che ho isolato. La funzione originaria eliminerebbe i caratteri non ASCII da una stringa in un modo speciale che avevo bisogno, la cosa è questo programmaNessun output quando si utilizza `fprintf 'dopo` fwprintf'

non sarebbe stampare il secondo -- Example sul mio sistema Linux
#include <stdio.h> 
#include <wchar.h> 

int main(int argc, char *argv[]) 
{ 
    fwprintf(stdout, L"-- Example\n"); 
    fprintf(stdout, "-- Example\n"); 

    return 0; 
} 

(Fedora 22). Sebbene utilizzare nuovamente fwprintf() o fprintf(stderr, "-- Example\n"); funzionerebbe.

  • È questo il comportamento previsto? E perché?
+1

Quale sistema operativo? – trojanfoe

+0

@trojanfoe Aggiornamento dei tag. –

+0

funziona con MSVC. –

risposta

1

Credo che questo problema potrebbe essere correlato all'orientamento di larghezza del flusso di file. Se non si utilizza fwide(), l'orientamento della prima funzione del file viene utilizzato per determinare l'orientamento (è anche possibile impostare l'orientamento all'apertura del file, ma ciò non si applica qui).

Una volta che il flusso è ampio, è necessario utilizzare funzioni ampie; e quando non è ampio è necessario utilizzare funzioni non ampie.

Una volta impostato l'orientamento, non può essere modificato.

+0

Sto leggendo la tua risposta. Ho provato a ripristinare l'ampia direzione e, come dici tu, non è consentito cambiarla. Non capisco perché questo comportamento è stato imposto. Conosci la ragione di questo comportamento? –

Problemi correlati