Lire la fonction dans le langage C

Lire la fonction dans le langage C

Le langage C a deux fonctions de base qui vous permettent de lire les fichiers à l'aide des fonctions Read () et Fread (). Il a également des méthodes avec des fonctions pour lire les fichiers caractéristiques par caractère.

Il est important de connaître les fonctions de traitement des fichiers, leurs méthodes d'appel, les arguments d'entrée et de sortie, etc., Afin de les utiliser couramment parce qu'ils sont la ressource disponible pour le programmeur pour stocker et éliminer les informations stockées dans le système.

Dans cet article de Linux Hint, vous apprendrez à utiliser la fonction Read () pour lire les fichiers.

Nous expliquerons tout sur «Ella», sa syntaxe, l'appel de méthode, les arguments d'entrée et de sortie, le type de données qu'ils acceptent chacun et comment les déclarer correctement.

Nous appliquons ensuite ce que nous avons appris en mettant l'utilisation de cette fonctionnalité dans des exemples pratiques.

Pour que vous soyez pleinement conscient de la façon d'utiliser la fonction Read (), nous avons ajouté une section spéciale qui décrit toutes les erreurs qui peuvent se produire lors de l'utilisation de cette fonction, ainsi que de leur détection et de leur identification, afin que vous ayez le nécessaire Techniques pour une solution rapide en cas d'erreur.

Syntaxe de la fonction read () dans le langage C

size_t read (int fd, void * buf, size_t count);

Description de la fonction read () dans le langage C

La fonction read () lit le contenu du fichier ouvert qui est spécifié par son descripteur dans l'argument d'entrée «FD». Cette fonction lit et copie le nombre de comptes d'octets dans le tampon qui est indiqué par BUF. L'identifiant «FD» est un entier qui est renvoyé à la suite de la fonction open () lorsque le fichier est ouvert.

Si la fonction read () renvoie avec succès, elle renvoie le nombre d'octets lecture. Un résultat égal à 0 signifie que le fichier est lu à la fin, et -1 signifie qu'une erreur se produit. L'erreur spécifique peut être identifiée en récupérant son code à partir de la variable globale Errno. Plus tard, vous trouverez une section qui décrit les erreurs qui peuvent se produire lors de l'utilisation de la fonction Read () et les techniques pour les détecter et les identifier.

La fonction read () est déclarée dans «unistd.en-tête h ”. Pour l'utiliser, vous devez inclure ce fichier dans votre code comme suit:

#inclure

Comment lire un fichier avec la fonction read () dans le langage C

Dans cet exemple, nous expliquerons comment ouvrir et lire un fichier à l'aide des fonctions Open () et Read ().

À cette fin, nous avons précédemment créé un fichier texte avec le nom: «Exemple.txt ", via le gestionnaire de Linux et l'enregistre dans le répertoire" Documents ". Nous avons écrit le premier paragraphe de cet article.

La première étape pour développer le code pour lire le fichier consiste à inclure les en-têtes nécessaires et à créer une fonction Main () qui renvoie une valeur vide. Nous définissons l'entier «FD» qui sert de descripteur de fichier, un tampon de caractères 1024 appelé «buff» où les informations lues par la fonction read () sont stockées. Le chemin du tableau stocke le chemin d'accès et le nom du fichier que nous voulons lire.

Après avoir défini les variables nécessaires, nous appelons la fonction Open () pour ouvrir le fichier. Nous appelons cette fonction en passant le tableau de chemin avec le chemin d'accès et le nom du fichier comme premier argument d'entrée et en spécifiant l'indicateur O_Rdonly comme deuxième argument. Nous passons l'entier «FD» comme l'argument de sortie où Open () renvoie le descripteur que nous utilisons pour lire dans le fichier.

Une fois que nous avons ouvert le fichier, nous lisons son contenu en appelant la fonction read () et en passant le descripteur «FD» qui est renvoyé par la fonction Open () comme le premier argument. Nous passons le pointeur au tampon «buff» comme deuxième argument où nous stockons le contenu à lire. Enfin, nous passons la taille du tampon qui est de 1024 octets dans ce cas. Nous utilisons ensuite la fonction printf () pour afficher le contenu qui est stocké dans «Buff» dans la console de commande.

Voici le code complet de cet exemple:

#inclure
#inclure
#inclure
#inclure
int main()

intfd;
Char Buff [1024];
Char Path [] = "Documents / Exemple.SMS";
fd = open (path, o_rdonly);
lire (FD, buff, 1024);
printf ("\ n \ n% s \ n \ n", buff);

Dans la figure suivante, nous voyons la compilation et l'exécution de ce code. Comme nous pouvons le voir, read () met le contenu entier de «l'exemple.Fichier txt "dans" buff "et la fonction printf () l'imprime à la console de commande:

Comment détecter et identifier les erreurs qui peuvent se produire lors de l'utilisation de la fonction Read () dans le langage C

L'utilisation de read () peut générer diverses erreurs. Lorsque cela se produit, cette fonction renvoie un résultat égal à -1.

Le moyen le plus simple de déterminer si une erreur s'est produite est d'utiliser une condition «IF» où la condition est la valeur de retour de -1. Maintenant, voyons comment vous pouvez utiliser cette méthode pour déterminer si une erreur s'est produite:

int n;
n = read (fd, buff, 1024);
if (n == -1)
printf ("Une erreur s'est produite en essayant de lire le fichier.");

Si la fonction read () revient avec une erreur, il passe à l'instruction «IF» et imprime le message, «une erreur s'est produite tout en essayant de lire le fichier».

Lorsqu'une erreur se produit, un code numérique est automatiquement stocké dans la variable globale Errno qui est définie dans le «errno.en-tête h ”. Ce code peut être utilisé pour identifier l'erreur qui s'est produite.

Ce qui suit est un extrait avec les erreurs que la fonction read () peut générer et qui sont définies dans le «errno.En-tête h ”, ainsi qu'une brève description de chaque erreur et la valeur entière associée:

Définition Valoriser errer Erreur
Aigain 11 Essayer à nouveau.
EBADF 9 Numéro de fichier incorrect.
Edestaddrreq 89 Adresse de destination requise.
Efault 14 adresse incorrecte.
Faire un efbig 27 Dossier trop grand.
Eintr 4 Appel système interrompu.
Einval 22 Argument invalide.
Eio 5 Erreur d'E / S.
Eperm 1 L'opération non autorisée.

La façon la plus simple d'identifier une erreur est d'ouvrir un commutateur où la variable Errno est la condition de saut et chaque cas est une définition d'erreur.

Ensuite, regardons un exemple où nous essayons d'entrer un descripteur avec un signe négatif, ce qui entraîne une erreur. Pour identifier une erreur, nous utilisons la condition «IF» que nous avons vue dans l'extrait précédent. Pour l'identifier, nous ouvrons un commutateur avec les trois erreurs les plus courantes que cette fonction peut produire.

#inclure
#inclure
#inclure
#inclure
#inclure
int main()

intfd, n;
Char Buff [1024];
Char Path [] = "Documents / Exemple.SMS";
fd = open (path, o_rdonly);
n = read (0, buff, 1024);
if (n == -1)
commutateur (errno)
case ebadf:
printf ("mauvais numéro de fichier. Erreur:% i \ n ", errno);
casser;
case einval:
printf ("argument non valide. Erreur:% i \ n ", errno);
casser;
cas eio:
printf ("Erreur d'E / S . Erreur:% i \ n ", errno);
casser;


Comme nous pouvons le voir dans la figure suivante, la fonction read () renvoie une erreur lorsqu'un descripteur non valide est passé comme un argument d'entrée. La valeur qui est récupérée de la variable Errno est utilisée comme condition de saut qui nous permet d'identifier l'erreur lorsque nous entrons le cas EBADF.

Conclusion

Dans cet article de Linux Hint, nous vous avons montré comment utiliser la fonction Read (), l'une des fonctions les plus courantes implémentées dans le langage C pour lire les fichiers.

Nous avons examiné sa syntaxe et une section qui décrivent son fonctionnement théorique, ses arguments d'entrée et de sortie, et ses types de données. Ensuite, nous avons implémenté ce que nous avons appris via un exemple pratique avec du code et des images qui montrent comment ouvrir et lire un fichier en utilisant les fonctions Open () et Read ().

Pour avoir les moyens nécessaires pour dépanner une erreur possible lors de l'utilisation de cette fonction, nous avons ajouté une section spéciale qui explique les méthodes que le langage C fournit pour détecter et identifier les erreurs.