Maison > Article > développement back-end > Comment puis-je lire stdin jusqu'à EOF en C sans boucles explicites ?
Capturer l'entrée depuis stdin jusqu'à EOF sans boucles
La lecture de l'entrée depuis l'entrée standard jusqu'à la fin du fichier (EOF) est une opération courante tâche en programmation C. Généralement, des boucles sont utilisées pour y parvenir, mais dans certaines situations, une approche sans boucle peut être souhaitable.
Solution sans boucles
Malheureusement, il n'existe pas de solution unique , fonction sans boucle en C qui peut lire l'entrée de stdin jusqu'à EOF. Cependant, la combinaison des opérateurs d'entrée et de la manipulation de chaînes C offre une solution de contournement :
char input[1000]; cin.getline(input, 1000); while (cin.eof() == false) { cout << input << endl; cin.getline(input, 1000); }
Cette approche utilise cin.getline() pour lire un maximum de 1 000 caractères de stdin dans le tableau d'entrée. Il vérifie ensuite si EOF a été atteint en utilisant cin.eof(). Sinon, il imprime l'entrée sur la console et répète le processus jusqu'à ce qu'EOF soit rencontré.
Meilleure approche basée sur la boucle
Si une solution sans boucle n'est pas réalisable ou souhaitable, la meilleure approche basée sur une boucle consiste à utiliser la fonction std::getline() :
string line; while (getline(cin, line)) { // Process the line }
Cette approche entre dans une boucle qui lit les lignes d'entrée en utilisant getline() jusqu'à ce que la fin du fichier soit atteinte. getline() renvoie false lorsque l'entrée échoue ou qu'EOF est rencontré, provoquant la fin de la boucle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!