Fonction C prérative

Fonction C prérative
Dans le langage de programmation C, le but du pread () La fonction consiste à lire le nombre spécifié d'octets (n) d'entrée qui sont indiqués par le descripteur de fichier, dans la zone de tampon définie de la mémoire. Le pread () La fonction fait la même chose que le lire() Méthode, mais il commence à lire à partir d'un endroit spécifique dans le fichier plutôt que de mettre à jour le fichier entier avec le pointeur de fichier. La position du pointeur de fichier n'est pas affectée. Cependant, la valeur de décalage est utilisée pour spécifier l'emplacement de départ du fichier. Nous devons examiner comment cette fonction fonctionne pour voir cela.

Avant d'aller plus loin, nous devons comprendre la syntaxe de la fonction de préraction et ses fichiers d'en-tête requis pour cette illustration. Le unistd Le fichier d'en-tête est utilisé pour travailler avec la fonction prérative. Alors, voici le code à mettre dans le fichier de langage de programmation C:

#inclure

Le pread () La fonction contient les mêmes trois paramètres initiaux que le lire() fonction, et le quatrième paramètre est compensé pour la position spécifiée à l'intérieur du fichier. Toute tentative d'exécuter le pread () La fonction sur un fichier qui ne peut pas terminer une action de recherche entraînera une erreur. Voici la syntaxe de la fonction prérative:

SSIZE_T PREAD (int file_descriptor, void * tampon, size_t no_of_n_bytes, off_t offset);

Cette fonction renvoie un entier non négatif, indiquant qu'il a réussi à lire le nombre spécifié d'octets renvoyés par cette fonction. S'il renvoie une valeur négative, il ne parvient pas à lire le nombre spécifié d'octets. Il a réglé le errer pour EBADF (ce qui signifie que le descripteur de fichier n'est pas un descripteur de fichiers ou de socket valide), Econnreset (Un pair a forcé la résiliation d'une connexion), Efault, Enobufs (ressources système insuffisantes pour terminer l'appel), etc.

Pour obtenir les détails de errer, Veuillez faire des recherches en ligne. La fonction de lecture ne nécessite pas d'autorisation de lire un fichier à partir du système de fichiers ou du réseau.

Exemple 1

L'exemple ci-dessous ouvre un fichier et lit les données de l'informatique. Pour commencer ce tutoriel, démarrez un terminal à Linux, Unix ou tout autre système d'exploitation que vous souhaitez. Ensuite, comme indiqué ci-dessous, passez du répertoire actuel à un autre répertoire de travail approprié, ou un dossier «Works» dans notre cas. Utilisez la commande «LS» pour afficher presque tous les fichiers et répertoires du répertoire de travail. Dans l'éditeur VIM, ouvrez ou créez un nouveau fichier intitulé «Préade.C ”, un fichier de langage de programmation C.

Nous utilisons l'éditeur VIM pour l'ouvrir et le créer. Cependant, vous pouvez utiliser le rédacteur que vous aimez, comme Nano, Text, etc. Vous pouvez voir que nous avons un nouveau.SMS Fichier dans cette liste des répertoires. Ce fichier sera utilisé dans notre code C maintenant. Regardez le terminal suivant pour visualiser la sortie:

Les fichiers d'en-tête sont inclus dans les trois premières lignes. Après cela, la méthode principale commence par sa première ligne déclarant deux variables entières, je.e., nobs et file d'accès. Après cela, nous avons réglé le décalage sur 5. Nous définissons un tableau de caractères «tampon» et définissons la valeur sur «Tester le texte» dans la troisième ligne de la fonction principale. Nous fournissons à l'utilisateur un accès uniquement nouveau.SMS fichier dans l'expression conditionnelle à l'aide d'un ouvrir() fonction.

La fonction ouverte est là pour renvoyer une valeur de descripteur enregistrée dans la variable FiledEscriptor. Si le descripteur obtient la valeur inférieure à 0, le Perror () La fonction sera exécutée pour lancer une erreur. Dans l'instruction ELSE, nous utilisons la fonction de préraction pour transmettre les valeurs des variables et la taille de la fonction pour décrémenter la taille du tampon si le descripteur obtient la valeur supérieure à 0. L'instruction d'impression a affiché la sortie.

Ce qui suit est le contenu du nouveau.fichier txt. Le texte du tampon est sur la troisième ligne, qui est le point de lecture de décalage. Regardez le terminal suivant pour visualiser la sortie:

Maintenant, utilisez le compilateur C pour compiler le préserver.c déposer. Nous utilisons le compilateur GCC pour la compilation et l'exécution du code C. Dans le terminal, tapez «gcc» et saisissez le nom du fichier C nécessaire, suivi du -o commutateur et le nom du fichier de sortie vu dans la capture d'écran suivante. Le compilateur affichera toute erreur pendant la compilation dans la fenêtre du terminal. Le fichier de sortie requis est créé si la compilation est réussie et peut être trouvée dans le répertoire de travail.

La sortie peut fluctuer en fonction de la valeur de décalage. De même, si la valeur du tampon est modifiée, la sortie sur l'écran du terminal changera sans aucun doute. Maintenant, tapez la commande suivante dans l'invite de commande pour exécuter le fichier de sortie. Regardez le terminal suivant pour visualiser la sortie:

Maintenant, en utilisant l'éditeur VIM, nous voulons mettre à jour le préserver Fichier et besoin de définir la valeur de décalage sur 8, et pour la mise à jour du tampon, la chaîne sur "Animaux" au lieu du "Test Text" comme code indiqué dans l'image suivante:

Parce que nous avons apporté des modifications à notre fichier de code de programme, nous devons maintenant recompiler notre code. Le processus de compilation est le même que celui effectué dans les étapes précédentes. Voici l'image du nouvel écran de compilation:

Maintenant, nous devons imprimer la sortie à l'écran en utilisant le sortir ou fichier d'objet Nous avons obtenu après avoir terminé la procédure de compilation. Voir la sortie sur l'écran du terminal en tapant la commande suivante. La sortie de ceci est «animal». Regardez l'écran du terminal attaché suivant pour visualiser la sortie:

Conclusion

Cet article a montré l'utilisation de la fonction prérative de C pour lire les données à partir de certains fichiers texte de notre système Linux en octets. Nous avons discuté de la façon dont un pread () La fonction est différente du simple lire() fonction due à l'utilisation d'un point spécifique pour lire les données d'un fichier.