Écrire une fonction dans le langage C

Écrire une fonction dans le langage C

La gestion des fichiers en programmation est une tâche dans laquelle le programmeur doit être couramment. La connaissance des différentes fonctions ouvertes, lues et écrites est essentielle car nous en avons toujours besoin pour stocker ou disposer les informations stockées dans des fichiers.

Dans cet article de Linux Hint, vous apprendrez à utiliser la fonction écrite () pour écrire les fichiers.

Nous expliquerons tout sur cette Ella, sa syntaxe, la méthode d'appel, les arguments d'entrée et de sortie, le type de données qu'il accepte dans chaque cas et comment le déclarer correctement.

Ensuite, nous appliquons ce que nous avons appris en mettant l'utilisation de cette fonction dans des exemples pratiques que nous avons préparés pour vous avec des extraits de code et des images, montrant l'utilisation d'écriture () dans la langue C.

Pour que vous ayez une connaissance complète de l'utilisation de la fonction écrite (), nous avons ajouté une section spéciale qui décrit les erreurs individuelles 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 Techniques nécessaires pour une solution rapide en cas d'occurrence.

Syntaxe de la fonction écrite () dans le langage C

int write (int fd, void * buf, size_t n);

Description de la fonction écrite () dans le langage C

La fonction écrite () écrit dans un fichier ouvert. Cette fonction écrit le contenu du tampon qui est indiqué par «buf» dans le fichier spécifié par son descripteur dans l'argument d'entrée «FD». La taille du bloc à écrire dans le fichier doit être spécifiée dans l'argument d'entrée «N».

Pour pouvoir écrire avec la fonction écrite (), le fichier doit être ouvert avec la fonction Open () et spécifié dans les attributs O_Rdonly ou O_RDWR. Sinon, cette fonction n'a aucun effet.

Si l'appel réussit, il renvoie le nombre de caractères entrés. Si une erreur se produit lors de l'écriture, il renvoie un résultat égal à -1. Le code d'identification qui indique l'erreur peut être récupéré à partir de la variable globale Errno qui est définie dans le «errno.en-tête h ”.

Plus tard, vous trouverez une section où nous expliquons comment détecter et identifier les erreurs les plus courantes de cette fonction.

La fonction écrite () est définie dans le «Unistd.en-tête h ”. Les drapeaux qui définissent les attributs et le mode pour ouvrir le fichier sont définis dans «fcntl.h ”. Pour utiliser les fonctions Open () et Write (), vous devez inclure ces en-têtes dans votre code comme suit:

#inclure
#inclure

Comment écrire dans un fichier en utilisant la fonction écrite () dans le langage C

Dans cet exemple, nous écrivons un fichier texte vide nommé «Exemple.txt ”que nous avons créé plus tôt dans le répertoire« documents ».

La première étape consiste à insérer les en-têtes nécessaires. À l'intérieur de la fonction Main (), ouvrez le fichier avec la fonction Open (). Pour ce faire, nous devons déclarer l'entier «FD» qui sert de descripteur de fichier, et le tableau tampon «BUF» 1024-Charge qui contient le texte que nous voulons écrire dans le fichier. Dans ce tampon, nous stockons le premier paragraphe de la page GCC Man pour l'écrire à l'exemple.Fichier txt ».

Après avoir ouvert le fichier avec la fonction Open () en mode lecture / écriture, nous écrivons dans le fichier en appelant la fonction écrite () et en passant le descripteur de fichier «FD» comme premier argument d'entrée, le pointeur «buf» comme deuxième argument, et la taille de la chaîne contenue dans le tableau comme troisième argument, que nous obtenons avec la fonction strlen (). Voici le code de cet exemple:

#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
vide main ()

int fd;
tampon char [1024] = "Lorsque vous invoquez le GCC, il fait normalement du prétraitement, de la compilation, de l'assemblage et de la liaison. Les options globales vous permettent d'arrêter ce processus à un stade intermédiaire. Par exemple, l'option -c indique de ne pas exécuter le linker.Ensuite, la sortie se compose de fichiers d'objets sortis par l'assembleur."
fd = Open ("Documents / Exemple.txt ", o_rdwr);
écrire (fd, & tampon, strlen (tampon));
Close (FD);

Dans la figure suivante, nous voyons la compilation et l'exécution de ce code avec le fichier ouvert écrit par la fonction écrite ():

Comment ajouter un texte à la fin d'un fichier avec la fonction écrite () dans le langage C

Lorsqu'un fichier est ouvert en spécifiant les drapeaux O_Wronly ou O_RDWR, le curseur passe à la première position et commence à écrire à partir de là.

Pour ajouter un texte à la fin d'un fichier, il doit être spécifié par une opération logique ou entre les indicateurs O_Wronly ou O_RDWR et l'indicateur O_ APPEND dans l'argument des indicateurs d'entrée de la fonction Open () lorsque le fichier est ouvert. De cette façon, le curseur est placé à la fin du fichier et l'écriture commence à partir de là. De plus, les attributs et le mode d'écriture peuvent être modifiés une fois le fichier ouvert avec la fonction fcntl ().

Dans l'illustration suivante, vous pouvez voir un code qui ajoute un texte à la fin du fichier que nous avons écrit dans l'exemple précédent:

#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
vide main ()

int fd;
tampon char [1024] = "Ce texte est ajouté. Ce texte est ajouté."
fd = Open ("Documents / Exemple.txt ", o_rdwr | o_append);
écrire (fd, & tampon, strlen (tampon));
Close (FD);

L'image suivante montre le texte ajouté. Comme vous pouvez le voir, avec cette méthode d'ouverture, la fonction écrite () commence à écrire à la position du dernier caractère écrit dans le fichier:

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

L'utilisation d'écriture () 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 = write (fd, & buffer, strlen (tampon));
if (n == -1)
printf ("Une erreur s'est produite en essayant d'écrire le fichier.");

Si la fonction écrite () revient avec une erreur, il passe à l'instruction «IF» et imprime le message, «Une erreur s'est produite en essayant d'écrire 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 écrite () 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 Valeur dans Errno Erreur
Aigain 11 Essayer à nouveau.
EBADF 9 Numéro de fichier incorrect.
Edestaddrreq 89 Adresse de destination requise.
Edquot 122 Quota dépassé.
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.
Ésopc 28 Pas d'espace disponible sur le périphérique.
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
#inclure
#inclure
vide main ()

int fd;
int n;
tampon char [1024] = "Hello World";
fd = Open ("Documents / Exemple.txt ", o_rdwr);
n = écrire (-2, & tampon, strlen (tampon));
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 écrite () 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 écrite () pour écrire dans les fichiers. Nous vous avons montré la syntaxe et la description théorique de cette fonction. Nous avons également expliqué les méthodes de détection des erreurs et d'identification afin que vous ayez les outils et techniques nécessaires pour résoudre rapidement ces problèmes.

Pour vous aider à voir comment Write () fonctionne, nous avons mis en œuvre l'utilisation de cette fonction dans des exemples pratiques avec des codes et des images qui montrent l'utilisation de cette fonction et des autres fonctions de traitement de fichiers.

Nous vous avons également montré comment sélectionner le mode Open de fichier pour insérer un texte au début ou à la fin du fichier, et quelles fonctions sont disponibles pour modifier ces attributs.