Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371

    [C] ordine printf scanf

    Non capisco come mai l'esecuzione di queste poche righe di codice non avvenga nell'ordine corretto
    codice:
    int main() 
        {
        printf("prova\n");
        int var;
        scanf("%d", &var);
        return 1;
        }
    In pratica mi lascia prima inserire qualsiasi cosa da terminale, dopodiché esegue la stampa della printf...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Forza lo svuotamento del buffer subito dopo la printf con

    fflush(stdout);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    Grazie, ora va ma sai dove potrei trovare una spiegazione?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Pensavo avessi già cercato da solo qualcosa con google a partire da fflush(stdout) ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    Si scusami, sapevo che serviva a svuotare il buffer quindi non ho cercato ulteriormente, ora sto leggendo da un paio di fonti e sto capendo meglio
    Grazie ancora(soprattutto per avermi spinto a cercare non dandomi la pappa pronta)

    EDIT: ora però leggendo mi sembra di capire che nel caso di newline non sarebbe necessario, quindi nel mio caso come mai è comunque richiesto?
    Ultima modifica di davidinho; 21-10-2013 a 19:58

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Quote Originariamente inviata da davidinho Visualizza il messaggio
    soprattutto per avermi spinto a cercare non dandomi la pappa pronta
    Di nulla ... figurati ... non l'avrei mai fatto ... :-)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Quote Originariamente inviata da davidinho Visualizza il messaggio
    EDIT: ora però leggendo mi sembra di capire che nel caso di newline non sarebbe necessario, quindi nel mio caso come mai è comunque richiesto?
    Infatti mi pare strano, stdout dovrebbe essere line-buffered, per cui la fflush non dovrebbe essere necessaria. Che compilatore (versione inclusa) stai usando? È tutto lì il codice che stai impiegando o c'è altro?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Che io sappia, puoi disabilitare il buffering con

    setbuf(stdout, NULL);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    residenza
    Roma
    Messaggi
    371
    uso mingw e dando da console il comando
    gcc --version
    mi viene restituito
    gcc (GCC) 4.8.1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.