Eventuali duplicati:
Does reading from stdin flush stdout?stdout e stdin relazioni
garanzie C++ standard che tutti i dati contenuti nel buffer saranno stampate prima chiamata successiva a std :: cin. Come questo:
#include <iostream>
void bar()
{
int x;
std::cout << "Enter an integer: "; /* 1 */
std::cin >> x; /* 2 */
}
A causa di questo:
ISO/IEC 14882: 2011
27.4.2 oggetti flusso stretto [narrow.stream.objects]
2 Dopo l'inizializzazione dell'oggetto cin, cin.tie() restituisce & cout. Lo stato è altrimenti uguale a quello richiesto per basic_ios :: init (27.5.5.2). Oggetti
27.4.3 allargare il getto [wide.stream.objects]
2 Dopo il wcin oggetto viene inizializzato, wcin.tie() restituisce & wcout. Lo stato è altrimenti uguale a quello richiesto per basic_ios :: init (27.5.5.2).
Ma in C non ci sono davvero garanzie che tutto ciò che è contenuto nel buffer di stdout verrà stampato prima di qualsiasi tentativo di stdin?
#include <stdio.h>
void bar()
{
int x;
printf("Enter an integer: "); /* 1 */
scanf("%d", &x); /* 2 */
}
so che stdout è la linea tamponato, ma io non voglio mettere '\ n' personaggio in tali situazioni. Usare fflush/fclose/etc è l'unico modo giusto per ottenere l'output giusto prima della richiesta di input in C?
Se la tua domanda è di circa C (e non sull'utilizzo di stdio in C++), si prega di contrassegnare con C e non C++. – Mat
Ho aggiunto il tag C ma questa domanda riguarda il confronto tra C e C++ IO, quindi vorrei anche tenere il tag C++. – FrozenHeart
Oh, è passato un po 'di tempo da quando una domanda ha suscitato il mio interesse. Non avevo mai prestato attenzione a 'legare', starò a guardare questo :) –