Maison  >  Article  >  développement back-end  >  Comment simuler un signal de fin de fichier (EOF) dans le flux d'entrée standard (stdin) lorsqu'il est en mode interactif ?

Comment simuler un signal de fin de fichier (EOF) dans le flux d'entrée standard (stdin) lorsqu'il est en mode interactif ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 02:48:29731parcourir

How can you simulate an End of File (EOF) signal in the Standard Input stream (stdin) when it's in interactive mode?

Fin de fichier (EOF) du flux d'entrée standard (stdin)

Lorsque vous utilisez stdin comme source d'entrée pour les programmes, il est naturel de je me demande s'il prend en charge une indication de fin de fichier (EOF). La nature de l'entrée standard varie en fonction de la façon dont elle est configurée.

stdin avec entrée à partir d'un fichier

Lorsque stdin est redirigé depuis un fichier, il a intrinsèquement un EOF marque, similaire aux flux de fichiers réguliers. En effet, les fichiers ont un point de terminaison défini et lorsque l'opération de lecture atteint la fin du fichier, la condition EOF est rencontrée.

stdin de la console

Cependant , l'entrée stdin de la console, connue sous le nom de mode interactif, n'a pas intrinsèquement d'indicateur EOF. En effet, la saisie dans la console est généralement un flux continu de caractères saisis par l'utilisateur.

Simulation d'EOF en mode console

Pour simuler un EOF en mode console, la plateforme- des combinaisons de touches spécifiques peuvent être utilisées :

  • Systèmes basés sur Unix : Ctrl D
  • Systèmes Windows : Ctrl Z

En appuyant sur ces combinaisons de touches, le Le programme l'a traité comme si l'entrée avait atteint sa fin.

Ajout manuel d'EOF à stdin

Comme mentionné précédemment, stdin de la console est considéré comme un flux infini. Pour ajouter manuellement un EOF, l'utilisateur doit l'indiquer explicitement à l'aide des combinaisons de touches Ctrl D ou Ctrl Z.

Solution utilisant les fonctions fread ou read

Dans le code fourni échantillon en utilisant fread ou read, la boucle continuera indéfiniment jusqu'à ce que EOF soit rencontré. Pour ajouter manuellement une condition EOF dans ce scénario, utilisez l'approche suivante :

<br>int c;<br>while ((c = read(0, buffer, BUFSIZ)) > 0) {</p>
<pre class="brush:php;toolbar:false">// Read and process data from stdin

}

// Lorsque Ctrl D ou Ctrl Z est enfoncé, c sera -1, indiquant EOF
if (c == -1) {

// Handle EOF condition

}

De cette façon, la boucle peut se terminer lorsque l'utilisateur appuie sur la combinaison EOF, permettant au programme de gérer la fin de la saisie en conséquence.

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