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:
#inclureComment 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 1La 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);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:
#inclureL'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.