Fonction ouverte dans le langage C

Fonction ouverte dans le langage C

La connaissance des fonctions ouvertes, lues et écrites est essentielle car nous en avons toujours besoin pour stocker ou éliminer les informations stockées dans des fichiers. Le langage C a deux fonctions de base que vous pouvez utiliser pour ouvrir les fichiers, en utilisant les fonctions open () et fopen (), chacune avec des méthodes d'appel différentes.

Dans cet article sur Linux Hint, vous apprendrez à utiliser la fonction Open (). Nous expliquerons tout sur cette fonction, sa syntaxe, l'appel de la méthode, 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 appliquerons ce que nous avons appris en mettant en œuvre 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 qui montrent l'utilisation de la fonction ouverte () dans le langage C.

Pour que vous ayez une connaissance complète, nous ajoutons une section spéciale qui décrit toutes les erreurs qui peuvent se produire lors de l'utilisation de cette fonction, ainsi que leur détection et leur identification, de sorte qu'en cas de se produire, vous avez les techniques nécessaires pour un solution rapide.

Syntaxe de la fonction ouverte () dans le langage C

int ou ouvert (const char * pathname, int draps);

Description de la fonction ouverte () dans le langage C

La fonction Open () ouvre un fichier pour la lecture ou l'écriture. Cette fonction ouvre le fichier spécifié dans l'argument d'entrée du chemin d'accès. Cette entrée doit spécifier le chemin absolu ou relatif et le nom du fichier au format de chaîne ou un pointeur.

L'argument d'entrée des drapeaux spécifie les attributs que le fichier doit avoir. Ce qui suit est une liste des drapeaux que cet argument d'entrée accepte, et une brève description de l'attribut que chacun définit:

Drapeau Description
O_rdonly Ouvrir le fichier pour la lecture uniquement.
O_wronly Ouvrez le fichier pour l'écriture uniquement.
O_RDWR Ouvrez le fichier pour la lecture et l'écriture.
O_CREAT Crée un fichier dans le chemin et le nom spécifié dans cheminée argument.
O_ Ajouter Ouvre le fichier et place le curseur à la fin du contenu.
O_async Activer le contrôle d'entrée et de sortie par signal.
O_CLOEXEC Activer le mode Close-on-EXEC sur le fichier ouvert.
O_NONBLOCK Désactives le blocage du fichier ouvert.
O_TMPFILE Créez un fichier temporaire sans nom sur le chemin spécifié.

Dans les cas où plus d'un drapeau est utilisé, une opération logique «ou» doit être effectuée entre eux. Cela peut être fait dans les indicateurs d'argument d'entrée dans la même ligne de code que l'appel de fonction.

Les attributs et les modes peuvent être modifiés ou consultés une fois le fichier ouvert avec la fonction fcntl ().

La fonction open () renvoie un entier qui contient le descripteur du fichier ouvert. Ce descripteur est utilisé comme un argument d'entrée pour les fonctions de traitement de fichiers comme read (), write (), etc., Pour se référer au fichier.

Cette fonction est définie dans «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 la fonction Open (), vous devez inclure ces en-têtes dans votre code comme suit:

#inclure
#inclure

Comment ouvrir un fichier à l'aide de la fonction Open () dans le langage C

Dans cet exemple, nous utiliserons la fonction Open () pour ouvrir un fichier en mode lecture et écriture. Dans ce cas, il s'agit d'un fichier créé précédemment appelé "exemple.SMS" qui est stocké dans «Documents».

Étape 1: La première étape consiste à inclure les en-têtes requis et à déclarer qu'il sort vide et revient dans la fonction principale ().

Étape 2: L'étape suivante consiste à déclarer les variables qui servent d'arguments d'entrée et de sortie à la fonction Open (). En tant qu'argument de sortie, nous déclarons l'entier «FD» qui est le descripteur de fichier. Comme argument d'entrée, nous déclarons le tableau de caractères tampon qui contient la chaîne avec le chemin et le nom du fichier à ouvrir.

Nous déclarons également un tableau de 512 caractères appelés «texte» où nous stockons le texte que nous voulons écrire dans le fichier qui, dans ce cas, est le premier paragraphe de cet article.

Étape 3: Une fois les variables déclarées, nous appelons la fonction Open () et passons l'entier «fd» comme argument de sortie, le chemin de chaîne comme premier argument d'entrée et l'indicateur O_Wronly comme deuxième argument.

Étape 4: Lorsque Open () revient de l'appel, il renvoie le descripteur du fichier qui est ouvert dans "FD". Ensuite, nous écrivons avec la fonction écrite (), passant le descripteur «FD» comme premier argument d'entrée, le texte de chaîne comme deuxième argument d'entrée, et enfin la taille du texte qui est obtenu avec la fonction strlen (). Après l'opération d'écriture, nous fermons le fichier avec la fonction close ().

Voici le code complet de cet exemple:

//Étape 1
#inclure
#inclure
#inclure
#inclure
#inclure
vide main ()

//Étape 2
intfd;
tampon char [] = "documents / exemple.SMS";
Le texte char [512] = "La connaissance des différentes fonctions ouvertes, lues et écrites est essentielle car nous aurons toujours besoin d'eux pour stocker ou éliminer les informations stockées dans des fichiers.
Le langage C a deux fonctions de base que vous pouvez utiliser pour ouvrir des fichiers, ouvrir () et fopen (), chacun avec différentes méthodes d'appel."
//Étape 3
fd = open (tampon, o_wronly);
//Étape 4
écrire (fd, & text, strlen (texte));
Close (FD);

La figure suivante montre la compilation et l'exécution de ce code avec le fichier que nous venons d'écrire. Comme nous pouvons le voir, la fonction Open () ouvre correctement le fichier. Nous utilisons ensuite la fonction écrite () pour écrire le contenu du texte. Dans ce cas, il contient le premier paragraphe de cet article:


Erreurs qui peuvent se produire lors de l'utilisation de la fonction Open (): comment les détecter et les identifier

L'utilisation de la fonction Open () peut conduire à diverses erreurs. Si tel est le cas, il 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 -1 qui est renvoyée en «FD». Maintenant, regardons comment vous pouvez utiliser cette méthode pour déterminer si une erreur s'est produite:

fd = open ("path / nom de fichier", drapeaux);
if (fd == - 1)
printf ("Une erreur s'est produite en essayant d'ouvrir le fichier.");

Si la fonction Open () revient avec une erreur, elle va à l'instruction «IF» et imprime le message, «Une erreur s'est produite en essayant d'ouvrir le fichier".

Lorsque Open () renvoie un résultat égal à -1, il stocke automatiquement un code numérique dans la variable globale Errno qui est définie dans le «errno.en-tête h ”. Ce code numérique peut être utilisé pour identifier l'erreur qui s'est produite.

Ce qui suit est un extrait des erreurs que la fonction Open () peut générer, ainsi qu'une brève description de chaque erreur et la valeur entière associée:

Définition Valeur dans Errno Erreur
Eperm 1 Opération non autorisée
Ennoent 2 Aucun fichier ou répertoire de ce nom
Eintr 4 Appel système interrompu
Enxio 6 Pas de tel appareil ou adresse
Énover 12 Mémoire insuffisante
Eacces 13 Permission refusée
Efault 14 Mauvaise adresse
Ebusy 16 Périphérique ou ressource occupé
Eexiste 17 le fichier existe
Enodev 19 Pas de tel appareil
Enotdir 20 Pas un répertoire
Eisdir 21 Est un directeur
Einval 22 Argument invalide
Mettre en œuvre 23 Débordement de la table de fichiers
Empilement 24 Trop de fichiers ouverts
Etxtbsy 26 Fichier texte occupé
Ésopc 28 Pas d'espace disponible sur le périphérique
Éreintes 30 Système de fichiers en lecture
Enametoolong 36 Nom du fichier trop long
Eloop 40 Trop de liens symboliques rencontrés
Secourir 75 Valeur trop grande pour le type de données défini
Edquot 122 Quota dépassé

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, considérons un exemple où nous ouvrons un fichier qui n'existe pas, ce qui entraîne une erreur. Pour détecter 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
vide main ()

intfd;
tampon char [1024];
fd = Open ("Documents / Non existe.txt ", o_append | o_rdwr);
if (fd == - 1)
commutateur (errno)
case eperm:
printf ("Opération non autorisée. Erreur:% i \ n ", errno);
casser;
case enoent:
printf ("Aucun fichier / répertoire de ce type. Erreur:% i \ n ", errno);
casser;
case enotdir:
printf ("pas un répertoire. Erreur:% i \ n ", errno);
casser;


L'image suivante montre la compilation et l'exécution de ce code. Dans ce document, nous voyons comment l'erreur générée est détectée dans la condition «IF» et comment les erreurs sont identifiées dans le commutateur conditionnel pour afficher le message et la valeur spécifique:

Conclusion

Dans cet article de Linux Hint, nous avons expliqué comment utiliser la fonction Open () pour ouvrir les fichiers.

Nous vous avons montré la syntaxe de cette fonction et la description théorique de son fonctionnement, la méthode d'appel, les arguments d'entrée et le type de données utilisé dans chaque cas.

Nous avons ensuite implémenté l'utilisation de la fonction Open () dans un exemple pratique en utilisant des extraits de code et des images. Nous vous avons montré comment déclarer les variables requises, appeler cette fonction pour ouvrir un fichier et lui écrire.

Nous avons également inclus une section où nous énumérons toutes les erreurs que cette fonction peut générer. Nous vous avons montré les techniques pour les détecter et les classer afin que vous ayez les moyens nécessaires pour les réparer rapidement lorsqu'ils se produisent.