Maison  >  Article  >  développement back-end  >  Comment puis-je lire stdin jusqu'à EOF en C sans boucles explicites ?

Comment puis-je lire stdin jusqu'à EOF en C sans boucles explicites ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-17 04:01:03749parcourir

How Can I Read stdin Until EOF in C   Without Explicit Loops?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn