Construisez le chemin des rayons dans un prisme. Stepanova V.A. éléments d'optique géométrique

La fonction fopen() ouvre un flux à utiliser, associe un fichier à ce flux, puis renvoie un pointeur FILE vers ce flux. Le plus souvent, le fichier est traité comme un fichier disque. La fonction fopen() a le prototype suivant :

FICHIER *fopen(const char *nom de fichier, const char *mode);

Où mode pointe vers une chaîne contenant le mode souhaité pour ouvrir le fichier. Les valeurs valides pour le mode dans Borland C++ sont indiquées dans le tableau. le nom de fichier doit être une chaîne de caractères fournissant un nom de fichier valide système opérateur, et peut contenir une indication de chemin.

La fonction fopen() renvoie un pointeur vers le type de base FILE. Ce pointeur identifie le fichier et est utilisé par la plupart des fonctions. système de fichiers. Vous ne devriez jamais le changer vous-même. La fonction renvoie un pointeur nul si le fichier ne peut pas être ouvert.

Comme le montre le tableau, le fichier peut être ouvert en mode texte ou binaire. En mode texte, au fur et à mesure que vous tapez, la séquence de retours chariot et de sauts de ligne est traduite en un caractère de nouvelle ligne. En sortie, l'inverse est vrai : le caractère de nouvelle ligne est traduit en un retour chariot et un saut de ligne. Cette traduction ne se produit pas dans les fichiers binaires. Lorsque ni t ni b ne sont spécifiés dans l'argument mode, alors l'état texte/binaire du fichier est déterminé par la valeur de la variable globale _fmode définie dans Borland C++. Par défaut, fmode est défini sur O_TEXT, c'est-à-dire que le mode texte est défini. Si vous définissez _fmode sur O_BINARY, les fichiers seront ouverts en mode binaire. (Ces macros sont définies dans fcntl.h.) Naturellement, l'utilisation d'un t ou d'un b explicite élimine les effets associés à la variable _fmode. De plus, _fmode est spécifique aux produits Borland uniquement. Il n'est pas défini dans le système d'E/S ANSI C.

Si vous devez ouvrir un fichier nommé test pour l'écriture, vous devez écrire :

Fp = fopen("test", "w");

Où est fp type de variable DÉPOSER *. Cependant, il est courant de voir les éléments suivants :

Si((fp = fopen("test", "w"))==NULL) (
puts("Impossible d'ouvrir le fichier.");
sortie(1);
}

Cette méthode permet de détecter les erreurs lors de l'ouverture d'un fichier, par exemple, la présence d'une protection en écriture ou l'absence de espace libre sur disque.

Si fopen() est utilisé pour ouvrir un fichier en écriture, alors tout fichier préexistant portant le nom spécifié sera supprimé. Si un fichier portant le nom spécifié n'existe pas, il sera créé.

Si vous devez ajouter des informations à la fin du fichier, vous devez utiliser le mode a (ajouter). Si le fichier n'existe pas, il sera créé.

L'ouverture d'un fichier en lecture nécessite la présence du fichier. Si le fichier n'existe pas, une erreur sera renvoyée. Si un fichier est ouvert pour une opération de lecture/écriture, il n'est pas supprimé s'il existe, et si le fichier n'existe pas, il est créé.

Tableau: Valeurs valides Modes

Signification

Ouvre un fichier en lecture. (S'ouvre par défaut sous forme de fichier texte.)

Crée un fichier dans lequel écrire. (S'ouvre par défaut sous forme de fichier texte.)

Se joint à un fichier. (S'ouvre par défaut sous forme de fichier texte.)

Ouvre un fichier binaire en lecture.

Ouvre un fichier binaire en écriture.

Se joint à un fichier binaire.

Ouvre un fichier en lecture/écriture. (S'ouvre par défaut sous forme de fichier texte.)

Crée un fichier en lecture/écriture. (S'ouvre par défaut sous forme de fichier texte.)

Attache ou crée un fichier en lecture/écriture. (S'ouvre par défaut sous forme de fichier texte.)

Ouvre un fichier binaire en lecture/écriture.

Crée un fichier binaire en lecture/écriture.

Attache ou crée un fichier binaire en lecture/écriture.

Crée un fichier texte pour l'écriture.

Se joint à un fichier texte.

Ouvre un fichier texte en lecture.

Crée un fichier texte pour la lecture/écriture.

Ouvre ou crée un fichier texte pour la lecture/écriture.

Pour le programmeur fichier ouvert est représenté comme une séquence de données en cours de lecture ou d’écriture. Lorsqu'un fichier est ouvert, il est associé à Flux d'E/S . Les informations de sortie sont écrites dans le flux, les informations d'entrée sont lues à partir du flux.

Lorsqu'un flux est ouvert pour les E/S, il est associé à une structure FILE standard, définie dans stdio.h. La structure FILE contient information nécessaireà propos du fichier.

L'ouverture d'un fichier se fait à l'aide de la fonction fopen(), qui renvoie un pointeur vers une structure de type FILE pouvant être utilisée pour les opérations ultérieures sur le fichier.

FICHIER *fopen(nom, type);

nom – nom du fichier à ouvrir (y compris le chemin),
type - pointeur vers une chaîne de caractères définissant la manière dont le fichier est accessible :

· "r" - ouvre le fichier en lecture (le fichier doit exister) ;

· "w" - ouvre un fichier vide en écriture ; si le fichier existe, son contenu est perdu ;

· "a" - ouvre le fichier pour l'écrire jusqu'à la fin (pour l'ajouter) ; le fichier est créé s'il n'existe pas ;

· "r+" - ouvre le fichier en lecture et en écriture (le fichier doit exister) ;

· "w+" - ouvre un fichier vide pour la lecture et l'écriture ; si le fichier existe, son contenu est perdu ;

· "a+" - ouvre le fichier pour lecture et ajout ; si le fichier n'existe pas, il est créé.

La valeur de retour est un pointeur vers le flux ouvert. Si une erreur est détectée, NULL est renvoyé.

La fonction fclose() ferme le ou les flux associés aux fichiers ouverts à l'aide de la fonction fopen(). Le flux à fermer est déterminé par l'argument de la fonction fclose().

Valeur de retour : valeur 0 si le flux a été fermé avec succès ; EOF constant si une erreur survient.

#inclure
int main()

char name="mon.txt";

si(fp = fopen(nom, "r")!=NULL)

// était-il possible d'ouvrir le fichier ?
... // actions requises sur les données

else printf("Échec de l'ouverture du fichier");

Lire un caractère à partir d'un fichier:

char fgetc(flux);

L'argument de la fonction est un pointeur vers un flux de type FILE. La fonction renvoie le code du caractère lu. Si la fin du fichier est atteinte ou qu'une erreur se produit, la constante EOF est renvoyée.
Écrire un symbole dans un fichier:

fputc(char, flux);

Les arguments de la fonction sont un caractère et un pointeur vers un flux de type FILE. La fonction renvoie le code du caractère lu.

Les fonctions fscanf() et fprintf() sont similaires aux fonctions scanf() et printf(), mais fonctionnent avec des fichiers de données et ont un pointeur vers le fichier comme premier argument.

fscanf(flux, "Format d'entrée", arguments);
fprintf(stream, "Format de sortie", arguments);

Les fonctions fgets() et fputs() sont conçues pour l'entrée/sortie de chaînes ; elles sont analogues aux fonctions gets() et puts() pour travailler avec des fichiers.

fgets (pointeur vers la ligne, nombre de caractères, flux);

Les caractères sont lus à partir du flux jusqu'à ce qu'un caractère de nouvelle ligne "\n" soit lu, qui est inclus dans la chaîne, ou jusqu'à ce que le flux termine EOF ou que le nombre maximum de caractères ait été lu. Le résultat est placé dans un pointeur de chaîne et se termine par le caractère nul "\0". La fonction renvoie l'adresse de la chaîne.

fputs (pointeur vers chaîne, flux);

Copie une chaîne dans le flux à partir de la position actuelle. Le caractère nul de fin n'est pas copié.
Exemple Entrez le numéro et enregistrez-le dans le fichier s1.txt. Lisez le numéro du fichier s1.txt, augmentez-le de 3 et enregistrez-le dans le fichier s2.txt.

Fichiers texte

Voyons travailler avec un fichier texte en C à l'aide d'un exemple. Créez un fichier texte sur le lecteur C nommé TextFile.txt. Tapez les lignes suivantes dans ce fichier :

Chaîne_1 123 Chaîne_11, 456
Chaîne_2
Chaîne_3

Enregistrez le fichier.

Et voici le code d'un programme C qui ouvre notre fichier et en lit les lignes :

/* *Auteur : @author Subbotin B.P..h> #include #define LEN 50 int main(void) ( puts("Opérations sur les fichiers texte"); char cArray; FILE *pTextFile = fopen("C:\\TextFile.txt", "r"); if(pTextFile == NULL) ( puts("Problèmes"); return EXIT_FAILURE; ) while(fgets(cArray, LEN, pTextFile) != NULL) ( printf("%s", cArray); ) fclose(pTextFile); return EXIT_SUCCESS;

Pour ouvrir un fichier texte en C, utilisez la fonction fopen :

FICHIER *pTextFile = fopen("C:\\TextFile.txt", "r");

Le premier argument de la fonction fopen pointe vers un fichier et le second indique que le fichier est ouvert en lecture.

On lit les lignes à l'aide de la fonction fgets :

fgets(cArray, LEN, pTextFile);

le premier argument de la fonction fgets pointe vers un tableau de caractères dans lequel seront stockées les chaînes reçues, le deuxième argument est quantité maximale caractères à lire, le troisième est notre fichier.

Après avoir fini de travailler avec le fichier, vous devez le fermer :

fclose(pTextFichier);

On a:

Des lettres russes apparaissent également dans les lignes.

Au fait, j'ai créé ce programme dans Eclipse. Vous pouvez voir comment travailler avec C/C++ dans Eclipse.

Nous avons donc ouvert et lu les données d'un fichier texte.

Nous allons maintenant apprendre à créer par programme un fichier texte et à y écrire des données.

/* Auteur : @author Subbotin B.P..h> #include int main(void) ( FILE *pTextFile = fopen("C:\\TextFileW.txt", "w"); char *cString = "Ceci est une chaîne"; char cNewLine = "\n"; int nVal = 123 ; if(pTextFile == NULL) ( puts("Problèmes"); return EXIT_FAILURE; ) fprintf(pTextFile, "%s%c", cString, cNewLine);

Créez un fichier texte dans lequel écrire des données :

FICHIER *pTextFile = fopen("C:\\TextFileW.txt", "w");

si le fichier existe déjà, il sera ouvert et toutes les données qu'il contient seront supprimées.

La chaîne C cString et le nombre nVal sont écrits par le programme dans un fichier texte. cNewLine est simplement une nouvelle ligne.

Nous écrivons les données dans un fichier texte à l'aide de la fonction fprintf :

fprintf(pTextFile, "%s%c", cString, cNewLine);

le premier argument ici est notre fichier, le deuxième est la chaîne de format, le troisième ou plus est le nombre d'arguments requis pour ce format.



Avez-vous aimé l'article? Partage avec tes amis!