Maison >développement back-end >C++ >Comment simuler EOF sur une entrée standard (stdin) ?

Comment simuler EOF sur une entrée standard (stdin) ?

DDD
DDDoriginal
2024-10-27 23:29:29791parcourir

How Do You Simulate EOF on Standard Input (stdin)?

Détermination de l'EOF du flux d'entrée standard (stdin)

En programmation, une source d'entrée courante est le flux d'entrée standard (stdin), qui lit les entrées du clavier de l'utilisateur . Cependant, déterminer quand l'utilisateur a fini de saisir les données et atteint la fin du fichier (EOF) peut parfois être difficile.

Stdin a-t-il EOF ?

Par défaut , stdin n'a pas intrinsèquement d'EOF. Cela signifie qu'un programme lisant depuis stdin continuera indéfiniment, en attendant plus d'entrées de la part de l'utilisateur.

Ajout d'EOF à stdin

Si vous devez simuler manuellement un EOF sur stdin, deux méthodes courantes sont :

  • Ctrl D (UNIX) : Dans les systèmes basés sur UNIX, appuyer sur Ctrl D signale la fin du fichier.
  • Ctrl Z (Windows) : Sous le système d'exploitation Windows, appuyer sur Ctrl Z indique généralement la fin de la saisie.

Exemple :

Ce qui suit L'extrait de code utilise fread pour lire depuis stdin et vérifie EOF à l'aide de Ctrl D :

<code class="c">#include <stdio.h>

int main() {
    char buffer[BUFSIZ];
    int c;
    
    while ((c = fread(buffer, sizeof(char), BUFSIZ, stdin)) > 0) {
        // Process input...
    }

    return 0;
}</code>

Lorsque l'utilisateur appuie sur Ctrl D, la fonction fread() renvoie -1, indiquant la fin du fichier. Cela déclenche la fin de la boucle while.

Remarque :

Il est important de noter que les méthodes de simulation EOF décrites ci-dessus dépendent du système et peuvent ne pas fonctionner de manière cohérente d'un bout à l'autre. toutes les plateformes.

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