2016-12-07 2 views
1

J'ai écrit un petit morceau de code combinant Cout et scanfCout imprime une déclaration puis scanf lit une valeur dans une variable entière âge. Mais la déclaration n'est pas imprimée avant d'avoir entré une valeur pour l'âge et d'appuyer sur Entrée. Veuillez trouver le code ci-dessous. J'essaie ce code sur cpp.shAppel scanf après Cout

#include <iostream> 
#include <cstdio> 

int main(){  
int age; 
std::cout << "Please enter your age: "; 
scanf("%d", &age); 
std::cout << "Hello, your age is: " << age << std::endl; 
return 1; 
} 
+0

C'est comment cela devrait-il fonctionner? –

+2

Utilisez 'flush':' std :: cout << "Veuillez entrer votre âge:" << std :: flush; '. –

+0

@ πάνταῥεῖ Je pense qu'il est préférable de convertir votre commentaire en une réponse et de fournir plus de détails – alexeykuzmin0

Répondre

1

Mais la déclaration n'est pas en cours d'impression jusqu'à ce que j'entrer une valeur pour l'âge et appuyez sur Entrée.

C'est parce que la production std::cout de tampons soit jusqu'à une certaine longueur ou un appel explicite flush() est appliqué.

Donc, pour forcer la sortie de la ligne rapide écriture:

std::cout << "Please enter your age: " << std::flush; 
0

D'autres moyens pourraient être mettre std :: endl; à la fin de

std::cout << "Please enter your age:"<<std::endl; 

std :: endl va sortir un retour à la ligne et vider le flux.