当前位置:网站首页>️ il suffit d'apprendre le fonctionnement du fichier c pour lire ceci (résumé de dix mille mots, avec des exercices)

️ il suffit d'apprendre le fonctionnement du fichier c pour lire ceci (résumé de dix mille mots, avec des exercices)

2021-10-14 07:28:15 - Non.

Table des matières

​​​

Un.,C'est écrit devant

2.,Pourquoi utiliser des fichiers

1,Raisons

2,Flux de données

3,Tampon(Buffer)

4,C Traitement de fichiers tamponnés dans la langue

5,Type de fichier

6, Mode d'accès aux fichiers

Trois,Qu'est - ce qu'un fichier

1,Documents de procédure

 2,Fichiers de données

3,Nom du fichier

Quatre,Ouverture et fermeture des fichiers 

1,Pointeur de fichier

 2,Ouverture et fermeture des fichiers

Cinq,Ordre de lecture et d'écriture des documents

1,Fonction

2,Mise en œuvre du Code

Six,Lecture et écriture aléatoires de fichiers

1,fseek

2,ftell

3,rewind

Sept,Fichiers texte et binaires

Huit,Détermination de la fin de la lecture du fichier

1 Mal utiliséfeof

Neuf,Tampon de fichier

Dix,Exercices 

1,C Concepts de fichiers linguistiques

2,Pointeur de type de fichier

3,Ouverture et fermeture des fichiers

4,Lecture et écriture des documents


Un.,C'est écrit devant

.Cet article est un résumé de mon expérience dans les vidéos scolaires et pédagogiques, L'article est un peu long , Si le lecteur veut en savoir plus C Opérations de fichiers linguistiques , Opérations de fichiers C Plus indépendant dans la langue ,Ce n'est pas si important., Il est recommandé de s'entraîner. , Apprendre à programmer sans pratiquer , Les progrès seront lents sans Code. ,(Cours de baby - sitting)Enfin, Si vous pensez que c'est bien écrit, ,Collection demandée,Je t'en prie.,Demande des commentaires, Il n'est pas facile d'exploser le foie. ,Votre triple lien est ma plus grande motivation pour apprendre!!!

2.,Pourquoi utiliser des fichiers

1,Raisons

Il s'agit de la persistance des données,Nos méthodes générales de persistance des données sont,Stocker les données dans un fichier disque、 Stockage dans les données Bibliothèque, etc. . En utilisant des fichiers, nous pouvons stocker les données directement sur le disque dur de l'ordinateur,La persistance des données a été réalisée.

2,Flux de données

Signifie que l'interaction du programme avec les données se fait sous forme de flux.En coursC Lors de l'accès aux fichiers linguistiques , Tout d'abord. “Ouvrir le fichier”Fonctionnement, Ceci ouvre le flux de données ,Et“Fermer le fichier” L'opération consiste à fermer le flux de données .

3,Tampon(Buffer)

Signifie au moment de l'exécution du programme , Mémoire supplémentaire fournie ,Peut être utilisé pour stocker temporairement des données en préparation à l'exécution. Il est conçu pour améliorer l'efficacité d'accès ,Parce que l'accès à la mémoire est beaucoup plus rapide qu'un disque dur.

4,C Traitement de fichiers tamponnés dans la langue

CLa fonction de traitement de fichiers de la langue dépend si le système est configuré“Tampon”Divisé en deux: L'un est de définir un tampon , L'autre est de ne pas tamponner .Parce que le traitement de fichier du tampon n'est pas défini, Doit utiliser un niveau inférieur I/OFonctions(Inclure dans le fichier d'en - têteio.hEtfcntl.hMoyenne) Pour accéder directement au disque , Accès lent de cette façon , Et parce que ce n'est pas CFonction standard pour, Les opérations multiplateforme sont sujettes à des problèmes . La première méthode de traitement est décrite ci - dessous. ,C'est - à - dire définir la façon dont les fichiers tamponnés sont traités:

Lorsque la norme est utilisée I/OFonctions(Inclure dans le fichier d'en - têtestdio.hMoyenne)Heure, Le système définit automatiquement le tampon , Et lire et écrire des fichiers à travers le flux de données . Lors de la lecture du fichier , Ne pas lire directement sur le disque , Au lieu de cela, ouvrez d'abord le flux de données ,Copier les informations du fichier sur le disque dans le tampon,Le programme lit ensuite les données requises à partir du tampon,Comme le montre la figure ci - dessous:

En fait, Lors de l'écriture d'un fichier , N'est pas immédiatement écrit sur le disque , Écrivez d'abord dans le tampon , Seulement si le tampon est plein ou “Fermer le fichier”Heure, Les données ne seront pas écrites sur le disque ,Comme le montre la figure ci - dessous.

5,Type de fichier

Divisé en fichiers texte et binaires.

Les fichiers texte sont enregistrés sous forme de codage de caractères.Le binaire rend les données en mémoire non originales dans le fichier, Pour les données non dominées par des caractères . Si ouvert dans un bloc - Notes , Je ne vois qu'un tas de désordre. .

En fait..., En plus des fichiers texte ,Toutes les données peuvent être considérées comme binaires.L'avantage des binaires est la rapidité d'accès,Petite empreinte, Et des données accessibles au hasard .

6, Mode d'accès aux fichiers

Y compris le mode d'accès séquentiel et le mode d'accès aléatoire.

Lecture séquentielle, c'est - à - dire de haut en bas , Lire le contenu du fichier un par un .Lors de l'enregistrement des données, Joindre les données à la fin du fichier . Cet accès est souvent utilisé dans les fichiers texte ,Les fichiers accessibles sont appelés fichiers séquentiels.

Le mode d'accès aléatoire est principalement binaire.Il lira et écrira les données dans une unit é complète, Généralement en unités structurelles .

Trois,Qu'est - ce qu'un fichier

Les fichiers sur le disque sont des fichiers. Mais dans la programmation,,Nous parlons généralement de deux types de documents:Documents de procédure、Fichiers de données(Classé du point de vue de la fonction de fichier).

1,Documents de procédure

Inclure les fichiers du programme source(Suffixe as.c),Fichier cible(windowsLe suffixe d'environnement est.obj),Programme exécutable(windowsEnvironnement Suffixe as.exe).

 2,Fichiers de données

Le contenu du fichier n'est pas nécessairement un programme,Ce sont des données lues et écrites au moment de l'exécution du programme.,Par exemple, un texte dans lequel un programme doit lire des données Pièce (s),Ou un fichier qui affiche le contenu.

En fait, parfois on affiche des informations sur le disque,Relisez les données du disque à la mémoire si nécessaire,Je m'occupe de C'est le fichier sur le disque. .

3,Nom du fichier

Un fichier doit avoir un identifiant de fichier unique,Pour l'identification et la référence de l'utilisateur.

Le nom du fichier contient3Section:Chemin du fichier+Nom du fichier tronc+Suffixe de fichier

Par exemple: c:\code\test.txt

Pour plus de commodité,L'id du fichier est souvent appelé nom du fichier.

Quatre,Ouverture et fermeture des fichiers 

1,Pointeur de fichier

Dans le système de fichiers tampon,Le concept clé est“Pointeur de type de fichier”,Abréviations“Pointeur de fichier”.

Chaque fichier utilisé a une zone d'information de fichier correspondante en mémoire,Informations relatives au stockage des documents( Comme le nom du fichier Mots,État du fichier et emplacement actuel du fichier, etc).Cette information est conservée dans une variable structurelle.Ce type de structure est systématique Déclaration,NomFILE.

Par exemple,VS2013Fourni par l'environnement de compilation stdio.h Le fichier d'en - tête contient la Déclaration de type de fichier suivante:

struct _iobuf {
        char *_ptr;
        int   _cnt;
        char *_base;
        int   _flag;
        int   _file;
        int   _charbuf;
        int   _bufsiz;
        char *_tmpfname;
       };
typedef struct _iobuf FILE;

DifférentCCompilateurFILELe type ne contient pas exactement le même contenu,Mais les similitudes et les différences.

Chaque fois qu'un fichier est ouvert,Le système crée automatiquement unFILEVariables structurelles,Et remplir les informations, L'utilisateur n'a pas à se soucier des détails.

Généralement par unFILEPour maintenir ceciFILEVariables structurelles,C'est plus facile à utiliser..

Nous pouvons créer unFILE*Variable pointeur pour:

FILE* pf;//Variable du pointeur de fichier

DéfinitionpfC'est une indicationFILEVariable pointeur pour les données de type.Peut fairepfZone d'information du fichier pointant vers un fichier( Est une variation structurelle Quantité).Le fichier est accessible à partir de l'information dans la zone d'information du fichier.C'est - à - dire,La variable de pointeur de fichier vous permet de trouver l'association avec elle Documents.

 2,Ouverture et fermeture des fichiers

Le fichier doit être ouvert avant de lire et d'écrire,Le fichier doit être fermé après utilisation.

Au moment de l'écriture du programme,Lors de l'ouverture du fichier,Tous retourneront à unFILE*La variable pointeur pour pointer vers le fichier, C'est l'équivalent de la création Relation entre le pointeur et le fichier .

ANSIC Utilisation prévuefopenFonctionsPour ouvrir le fichier,fclosePour fermer le fichier.

//Ouvrir le fichier
FILE * fopen ( const char * filename, const char * mode );
//Fermer le fichier
int fclose ( FILE * stream );
Utilisation des fichiers                       Sens Si le fichier spécifié n'existe pas
“r”(Lire seulement) Pour saisir des données,Ouvrir un fichier texte qui existe déjà Erreur
“w”(Écris seulement) Pour exporter des données,Ouvrir un fichier texte Créer un nouveau fichier
“a”(Annexe) Ajouter des données à la fin du fichier texte Erreur
“rb”(Lire seulement) Pour saisir des données,Ouvrir un binaire Erreur
“wb”(Écris seulement) Pour exporter des données,Ouvrir un binaire Créer un nouveau fichier
“ab”(Annexe) Pour exporter des données,Ouvrir un binaire Erreur
“r+”(Lire et écrire) Pour lire et écrire,Ouvrir un fichier texte Erreur
“w+”(Lire et écrire) Pour lire et écrire,Un nouveau document est proposé Créer un nouveau fichier
“a+”(Lire et écrire) Ouvrir un fichier,Lire et écrire à la fin du document Créer un nouveau fichier
“rb+”(Lire et écrire) Ouvrir un fichier binaire pour lire et écrire Erreur
“wb+”(Lire et écrire) Pour lire et écrire,Créer un nouveau binaire Créer un nouveau fichier
“ab+”(Lire et écrire) Ouvrir un binaire,Lire et écrire à la fin du document Créer un nouveau fichier

Cinq,Ordre de lecture et d'écriture des documents

1,Fonction

Fonction Nom de la fonction Pour
Fonction d'entrée de caractères fgetc Tous les flux d'entrée
Fonction de sortie de caractères fputc Tous les flux d'entrée
Fonction d'entrée de ligne de texte gets Tous les flux d'entrée
Fonction de sortie de ligne de texte fputs Tous les flux d'entrée
Formater la fonction d'entrée fscanf Tous les flux d'entrée
Formater la fonction de sortie fprintf Tous les flux d'entrée
Entrée binaire fread Documentation
Sortie binaire fwrite Documentation

Du flux(fgetc、fgetwc)Oustdin(fgetchar、fgetchar) Lire les caractères dans .

 

Écrire des caractères au flux (fputc,fputwc) Ou sortie standard (_fputchar,_fputwchar).

 

 Destdin Obtenir une ligne dans le flux .

  Écrire une chaîne au flux .

Lire les données formatées du flux .

 

  Imprimer les données formatées dans le flux .

Lire les données du flux.

 

Écrire des données dans le flux . 

2,Mise en œuvre du Code

  Commencez par créer un 321.txtDocumentation,Comme indiqué ci - dessus

int main()
{
	//Ouvrir le fichier
	FILE* pf = fopen("C:\\Users\\12556\\Desktop\\321.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return -1;
	}
	//Lire le document
	// 
	//Fermer le fichier
	fclose(pf);
	pf = NULL;

	return 0;
}

Aucune erreur,Ouverture réussie

int main()
{
	fputc('b', stdout);//putchar  printf("%c", ch);
	fputc('i', stdout);
	fputc('t', stdout);

	return 0;
}
int main()
{
	//Ouvrir le fichier
	FILE* pf = fopen("C:\\Users\\12556\\Desktop\\321.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return -1;
	}
	
    //Écrire des fichiers
	fputc('b', pf);
	fputc('i', pf);
	fputc('t', pf);

	//Fermer le fichier
	fclose(pf);
	pf = NULL;

	return 0;
}

 Écrit avec succès

int main()
{
	FILE* pf = fopen("C:\\Users\\12556\\Desktop\\321.txt", "r");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Lire le document
	int ch = fgetc(pf);
	printf("%c\n", ch);//a

	ch = fgetc(pf);
	printf("%c\n", ch);//b

	ch = fgetc(pf);
	printf("%c\n", ch);//c

	//Fermer le fichier
	fclose(pf);
	pf = NULL;
	
	return 0;
}
int main()
{

	int ch = fgetc(stdin);//getchar scanf("%c")
	printf("%c\n", ch);//a
	ch = fgetc(stdin);
	printf("%c\n", ch);//b

	ch = fgetc(stdin);
	printf("%c\n", ch);//c

	return 0;
}

Chaîne saisie avec succès

int main()
{
	FILE* pf = fopen("data.txt", "w");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Écrire des fichiers
	//Écrivez une ligne de données
	fputs("hello world\n", pf);
	fputs("hello bit\n", pf);

	//Fermer le fichier
	fclose(pf);
	pf = NULL;
}

InC Sous les fichiers linguistiques ,On l'a trouvé.data.txtDocumentation, Ouverture de la découverte entrée réussie

 

int main()
{
	FILE* pf = fopen("data.txt", "r");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Lire le document
	//Lire une ligne de données
	char arr[20] = { 0 };
	fgets(arr, 20, pf);
	printf("%s\n", arr);

	fgets(arr, 20, pf);
	printf("%s\n", arr);

	//Fermer le fichier
	fclose(pf);
	pf = NULL;
}

 

  Fichier lu avec succès

struct S
{
	int n;
	double d;
};

int main()
{
	struct S s = { 100, 3.14 };

	FILE* pf = fopen("data.txt", "w");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Écrire des fichiers
	fprintf(pf, "%d %lf", s.n, s.d);

	//Fermer le fichier
	fclose(pf);
	pf = NULL;
}

 

Écrit avec succès

struct S
{
	int n;
	double d;
};
int main()
{
	struct S s = {0};
	FILE* pf = fopen("data.txt", "r");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Lire le document
	fscanf(pf, "%d %lf", &(s.n), &(s.d));

	printf("%d %lf\n", s.n, s.d);

	//Fermer le fichier
	fclose(pf);
	pf = NULL;
}

  Lire le fichier avec succès

struct S
{
	int n;
	double d;
	char name[10];
};

int main()
{
	struct S s = {100, 3.14, "zhangsan"};

	FILE* pf = fopen("data.txt", "wb");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Écrire des fichiers - Écrivez en mode binaire
	fwrite(&s, sizeof(s), 1, pf);

	//Fermer le fichier
	fclose(pf);
	pf = NULL;
}

Format de fichier différent , Mais l'ordinateur est binaire

//Format binaire lire
//
struct S
{
	int n;
	double d;
	char name[10];
};

int main()
{
	struct S s = {0};

	FILE* pf = fopen("data.txt", "rb");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Lire le document - Lecture binaire
	fread(&s, sizeof(struct S), 1, pf);

	//Imprimer
	printf("%d %lf %s\n", s.n, s.d, s.name);
	//100 3.140000 zhangsan
	
	//Fermer le fichier
	fclose(pf);
	pf = NULL;
}

  Lecture binaire réussie

struct S
{
	int n;
	double d;
	char name[10];
};

int main()
{
	char arr[100] = { 0 };

	struct S tmp = { 0 };
	struct S s = { 100, 3.14, "zhangsan" };
	//Convertir une donnée formatée en chaîne
	sprintf(arr, "%d %lf %s", s.n, s.d, s.name);
	//Imprimer
	printf("%s\n", arr);
	
	//DearrExtrait une donnée formatée de la chaîne dans
	sscanf(arr, "%d %lf %s", &(tmp.n), &(tmp.d), tmp.name);
	//Imprimer
	printf("%d %lf %s\n", tmp.n, tmp.d, tmp.name);

	return 0;
}

  Chaîne formatée avec succès

Six,Lecture et écriture aléatoires de fichiers

InC Créer sous le fichier langue data.txt.

 Ajouterabcdef

1,fseek

int fseek ( FILE * stream, long int offset, int origin );

Localiser le pointeur de fichier en fonction de sa position et de son décalage

int main()
{
	//Ouvrir le fichier
	
	FILE *pf = fopen("data.txt", "r");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Lecture et écriture aléatoires
	/*int ch = fgetc(pf);
	printf("%c\n", ch);*/
	fseek(pf, 2, SEEK_SET);
	int ch = fgetc(pf);
	printf("%c\n", ch);
	fseek(pf, -2, SEEK_CUR);
	
	fclose(pf);
	pf = NULL;
	return 0;
}

2,ftell

long int ftell ( FILE * stream );

Renvoie l'offset du pointeur de fichier par rapport à la position de départ


int main()
{
	//Ouvrir le fichier

	FILE* pf = fopen("data.txt", "r");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Lecture et écriture aléatoires
	/*int ch = fgetc(pf);
	printf("%c\n", ch);*/
	fseek(pf, 2, SEEK_SET);
	int ch = fgetc(pf);
	printf("%c\n", ch);
	fseek(pf, -2, SEEK_CUR);
	ch = fgetc(pf);
	printf("%c\n", ch);
	int ret = ftell(pf);
	printf("%c\n", ret);
	fclose(pf);
	pf = NULL;
	return 0;
}

 

3,rewind

void rewind ( FILE * stream );

Renvoie la position du pointeur de fichier à la position de départ du fichier

int main()
{
	//Ouvrir le fichier

	FILE* pf = fopen("data.txt", "r");
	if (NULL == pf)
	{
		perror("fopen");
		return -1;
	}
	//Lecture et écriture aléatoires
	/*int ch = fgetc(pf);
	printf("%c\n", ch);*/
	fseek(pf, 2, SEEK_SET);
	int ch = fgetc(pf);
	printf("%c\n", ch);
	fseek(pf, -2, SEEK_CUR);
	ch = fgetc(pf);
	printf("%c\n", ch);
	int ret = ftell(pf);
	printf("%c\n", ret);
	rewind(pf);
	printf("%c\n", ret);
	fclose(pf);
	pf = NULL;
	return 0;
}

Sept,Fichiers texte et binaires

Selon l'Organisation des données,Le fichier de données est appeléFichier texteOuBinaires. Les données sont stockées en mémoire sous forme binaire,Si la sortie n'est pas convertie en stockage externe,C'est un binaire.. Si vous avez besoin deASCIIStockage formel du Code,Doit être converti avant le stockage.ParASCII Les fichiers stockés sous forme de caractères sont: Fichier texte.

Comment une donnée est - elle stockée en mémoire? Tous les caractèresASCIIStockage formel,Les données numériques peuvent être utiliséesASCIIStockage formel,Peut également être stocké sous forme binaire. S'il y a des entiers10000,SiASCIISortie du Code sur le disque,Utilisé sur le disque5Octets(Un octet par caractère),Et Sortie sous forme binaire,Sur le disque4Octets(VS2019Tests).

 InC Créer sous le fichier langue 321.txt

#include <stdio.h>
int main()
{
	int a = 10000;
	FILE* pf = fopen("321.txt", "wb");
	fwrite(&a, 4, 1, pf);//Le format binaire est écrit dans le fichier
	fclose(pf);
	pf = NULL;
	return 0;
}

Ouvre.321.txt, Découverte non reconnue , Représentation binaire

 On est là.VSCherchez à l'intérieur

 

 

 16Représentation décimale

Huit,Détermination de la fin de la lecture du fichier

1 Mal utiliséfeof

N'oubliez pas:Pendant la lecture du fichier,Ça ne marche pasfeofLa valeur de retour de la fonction est utilisée directement pour déterminer si le fichier est terminé ou non. Mais... Appliquer à la fin de la lecture du fichier ,Le jugement est la fin de l'échec de lecture,Ou la fin du fichier a été rencontrée

1. Si la lecture du fichier texte est terminée,Déterminer si la valeur de retour est EOF ( fgetc ),Ou NULL ( fgets )

Par exemple: fgetc Déterminer si oui ou non EOF . fgets Déterminer si la valeur de retour est NULL .

2. Jugement de fin de lecture des binaires,Déterminer si la valeur de retour est inférieure au nombre réel de lectures.

Par exemple: freadDéterminer si la valeur de retour est inférieure au nombre réel de lectures.

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	int c; // Attention!:int,Nonchar,Traitement requisEOF
	FILE* fp = fopen("test.txt", "r");
	if (!fp) {
		perror("File opening failed");
		return EXIT_FAILURE;
	}
	//fgetc Lorsque la lecture échoue ou que le fichier se termine,Ils reviendront.EOF
	while ((c = fgetc(fp)) != EOF) // CritèresC I/OLire la boucle de fichier
	{
		putchar(c);
	}
	//Pourquoi le jugement a - t - il pris fin?
	if (ferror(fp))
		puts("I/O error when reading");
	else if (feof(fp))
		puts("End of file reached successfully");
	fclose(fp);
}

Exemple de fichier binaire

#include <stdio.h>
enum { SIZE = 5 };
int main(void)
{
	double a[SIZE] = { 1.,2.,3.,4.,5. };
	FILE* fp = fopen("test.bin", "wb"); // Doit être en mode binaire
	fwrite(a, sizeof * a, SIZE, fp); // Écris. double Tableau de
	fclose(fp);
	double b[SIZE];
	fp = fopen("test.bin", "rb");
	size_t ret_code = fread(b, sizeof * b, SIZE, fp); // Lire double Tableau de
	if (ret_code == SIZE) {
		puts("Array read successfully, contents: ");
		for (int n = 0; n < SIZE; ++n) printf("%f ", b[n]);
		putchar('\n');
	}
	else { // error handling
		if (feof(fp))
			printf("Error reading test.bin: unexpected end of file\n");
		else if (ferror(fp)) {
			perror("Error reading test.bin");
		}
	}
	fclose(fp);
}

feofObjet:C'est la fin de la lecture du fichier.,Déterminer si la fin du fichier a été rencontrée

ferrorObjet:La lecture du fichier est terminée., L'interprétation se termine - t - elle par une erreur?

Neuf,Tampon de fichier

ANSIC Adoption des normes“Système de fichiers tamponné”Fichiers de données traités,Le soi - disant Système de fichiers tampons est le système qui est automatiquement en mémoire pour les programmes Chacun des fichiers utilisés dans ouvre un bloc“Tampon de fichier”.La sortie des données de la mémoire vers le disque est d'abord envoyée dans un tampon en mémoire,Chargement Il n'est livré sur le disque qu'après avoir rempli le tampon.Si les données sont lues du disque à l'ordinateur,Lisez les données du fichier disque et saisissez - les dans le cache mémoire Zone d'impact(Tampon plein),Ensuite, les données sont envoyées un par un à partir du tampon dans la zone de données du programme(Variables du programme, etc.).Taille du tampon racine SelonCDéterminé par le système de compilation.

#include <stdio.h>
#include <windows.h>
//VS2013 WIN10Essais environnementaux
int main()
{
	FILE* pf = fopen("test.txt", "w");
	fputs("abcdef", pf);//Mettez d'abord le code dans le tampon de sortie
	printf("Sommeil10Secondes-Les données ont été écrites,Ouvre.test.txtDocumentation,Aucun contenu trouvé dans le fichier\n");
	Sleep(10000);
	printf("Rafraîchir Le tampon\n");
	fflush(pf);//Lorsque vous Rafraîchissez Le tampon,Pour écrire les données du tampon de sortie dans le fichier(Disque)
	//Note::fflush Dans les versions ultérieuresVSImpossible d'utiliser sur
	printf("Dormez à nouveau.10Secondes-En ce moment,Ouvrez à nouveautest.txtDocumentation,Le dossier a du contenu\n");
	Sleep(10000);
	fclose(pf);
	//Note::fcloseEn fermant le fichier,Le tampon est également rafraîchi
	pf = NULL;
	return 0;
}

Voici une conclusion: Parce qu'il y a un tampon,CLangue lors de la manipulation des fichiers,Besoin de rafraîchir Le tampon ou de fermer le fichier à la fin de l'opération Pièce (s). Si tu ne le fais pas,Peut causer des problèmes de lecture et d'écriture de fichiers.

Dix,Exercices 

1,C Concepts de fichiers linguistiques

No1Questions: Ce qui est vrai dans ce qui suit ( ).

A、 Lors de la lecture d'un fichier (Écris.)Une fois l'opération terminée, Il doit être éteint. , Le défaut de le faire peut entraîner une perte de données

B、Après avoir ouvert un fichier existant et écrit,Toutes les données du fichier original doivent être écrasées

C、Après avoir écrit un fichier dans un programme, Vous devez fermer le fichier avant de l'ouvrir , Pour lire 1Données

D、c Les fichiers dans la langue sont des fichiers de streaming , Par conséquent, les données ne peuvent être accessibles que séquentiellement

Résolution de référence :【Analyse】B)Après avoir ouvert un fichier existant dans l'option et écrit,Toutes les données du fichier original ne sont pas nécessairement écrasées,Vous pouvez également ajouter des opérations aux fichiers sources, etc.C)Options dans un programme après avoir écrit un fichier,Il n'est pas nécessaire de fermer le fichier avant de l'ouvrir, Pour lire 1Données,Ça marchefseek() La fonction peut être repositionnée .D)Dans les options,cLes fichiers dans la langue peuvent être lus et écrits au hasard.

No2Questions:À propos dec Ce qui est vrai dans la narration des documents linguistiques
A、Le fichier se compose d'une série de données disposées dans l'ordre, Ne peut former que des binaires

B、 Le fichier se compose d'une séquence de structure ,Peut constituer un fichier binaire ou un fichier texte

C、 Le fichier se compose d'une séquence de données ,Peut constituer un fichier binaire ou un fichier texte

D、 Le fichier se compose d'une séquence de caractères , Le type ne peut être qu'un fichier texte

Résolution de référence :【Analyse】 Concept du document d'examen , Le fichier est constitué d'une séquence de données ,Peut constituer un fichier binaire ou un fichier texte,Donc la réponse estCOptions.
 

No3Questions: À propos de "Pointeur de fichier" Le concept décrit correctement
A、 Le pointeur de fichier est utilisé dans le programme FILE Variable de pointeur définie

B、 Le pointeur de fichier est le pointeur de localisation de fichier , Indique l'agitation actuelle des données de lecture et d'écriture

C、Le pointeur de fichier indique où le fichier est stocké sur l'ordinateur

D、 Envoyer le pointeur de fichier à fscanfFonctions,Vous pouvez écrire n'importe quel caractère dans un fichier texte

Résolution de référence :【Analyse】InCPointer vers un fichier avec une variable pointeur dans la langue,Ce pointeur s'appelle un pointeur de fichier.Le pointeur de fichier vous permet d'effectuer diverses opérations sur le fichier auquel il se réfère. Le pointeur de fichier n'est pas un pointeur de localisation de fichier ,Alors...BC Erreur d'option ,D Aucun caractère ne peut être écrit dans l'option .
 

No4Questions: Ce qui est vrai dans les options suivantes
A、 Le pointeur de fichier est une variable de type pointeur

B、 Le pointeur de fichier peut pointer vers différents fichiers en même temps

C、La valeur du pointeur de fichier est l'information de chemin du fichier sur le disque de l'ordinateur

D、AppelezfscanfLe nombre d'inclusions peut écrire n'importe quel caractère dans un fichier texte

Résolution de référence :【Analyse】 Pointeur de fichier ,En fait, une variable pointeur vers un type de structure,Cette structure contient des informations sur le fichier, Comme l'adresse du tampon ,Emplacement des caractères actuellement accessibles dans le tampon, Oui, le dossier. “Lire""Toujours“Écris.”,Si une erreur s'est produite,Si des informations telles que le drapeau de fin de fichier ont été rencontrées.Le fichier fait référence à une variable dont le BIT lui - même est un type de pointeur,A Les options sont correctes .Un pointeur ne peut pointer qu'vers un seul fichier en même temps,B Erreur d'option . Le pointeur de fichier est une variable pointeur , L'adresse audio du cache de fichiers est stockée ,Au lieu des informations de chemin du fichier sur le disque de l'ordinateur,C Erreur d'option .fscanfLes fonctions sont lues dans un programme à partir d'un fichier texte dans un format, Au lieu d'écrire des données dans un fichier texte ,D Erreur d'option .

No5Questions: Ce qui suit est vrai:
A、 Le pointeur de fichier est une variable de type pointeur

B、La valeur de la variable de pointeur de fichier est le BIT de lecture courant du fichier

C、La valeur de la variable de pointeur de fichier est l'emplacement actuel de lecture du fichier

D、Appelezfscanf Monsieur. |Le nombre peut écrire n'importe quel caractère dans n'importe quel type de fichier

Résolution de référence :【Analyse】 Le pointeur de fichier pointe vers le tampon de fichier , Plutôt que l'emplacement du fichier lui - même ,Donc,BC Erreur d'option ;fscanfi)Fonction pour formater les données de lecture à partir d'un fichier spécifié,Le type de données de lecture est déterminé par le Contrôleur de format,D Erreur d'option ,La réponse estAOptions.
 

No6Questions: Ce qui suit est vrai:
A、Expressionsizeof(FILE*) == sizeof(int*)La valeur de est vraie

B、 La valeur du pointeur de fichier est un entier , Sa valeur doit être inférieure au nombre d'octets de fichier

C、La valeur du pointeur de fichier est l'emplacement actuel de lecture du fichier auquel il se réfère

D、UtiliserfscanfLa fonction peut écrire n'importe quel nombre de caractères dans n'importe quel type de fichier

Résolution de référence ∶【Analyse】sizeof(FILE*)=4,Parce quefile*Pointeur,Taille du pointeur4,sizeof(int*)=4 Les raisons sont les mêmes. . La valeur du pointeur de fichier est l'adresse ,C'est un16Nombre décimal, Sa valeur n'est pas nécessairement inférieure au nombre d'octets de fichier , Donc les options BErreur.Le pointeur de fichier est l'emplacement actuel de lecture du fichier référencé, Au lieu de la valeur du pointeur de fichier, donc l'option CErreur.intfscanf(FILE*stream.constchar*format, [argument.]):
fscanf Les fonctions peuvent être transférées à n'importe quel type de fichier ,N'importe quel nombre d'écritures ne peut pas dépasser le tampon du système, Écrire le fichier d'abord dans le tampon , Écrire le fichier ensemble pour la dernière fois , Donc les options DErreur.La réponse estAOptions
 

No7Questions:Ce qui suit concernec Ce qui est vrai dans la narration des documents linguistiques
A、 Le fichier se compose d'une séquence de données ,Il peut être de type binaire ou texte

B、 Le fichier se compose d'une séquence d'enregistrements ,Il peut être de type binaire ou texte

C、 Le fichier se compose d'une séquence de caractères ,Il peut être de type binaire ou texte

D、 Le fichier se compose d'une séquence de données , Le type ne peut être que binaire

Résolution de référence ︰【Analyse】CUn fichier linguistique est une collection ordonnée de données pertinentes, Vu de la façon dont les fichiers sont encodés , Les documents peuvent être divisés en: ASCII Code et binaire ,Parmi euxASCII Les fichiers sont également appelés fichiers texte , Donc le fichier se compose d'une séquence de données ,Le type peut être binaire ou texte,OptionsAExact..
 

2,Pointeur de type de fichier

No1Questions: Ce qui est vrai dans ce qui suit ().
A、Le pointeur de fichier est une variable spéciale de type pointeur

B、La valeur du pointeur de fichier est égale à la position actuelle de lecture / écriture du fichier,En octets

C、La valeur du pointeur de fichier est égale à l'emplacement de stockage du fichier sur le disque dur de l'ordinateur

D、AppelezfscanfLe nombre d'inclusions ne peut écrire que n'importe quel caractère dans un fichier texte

Résolution de référence :【Analyse】Un pointeur de fichier est en fait un pointeur vers un type de structure, Cette structure contient des éléments tels que: :Adresse du tampon、Emplacement des caractères actuellement accessibles dans le tampon、 Oui, le dossier. “Lire"Toujours“Écris.”、Si une erreur s'est produite、Si des informations telles que le drapeau de fin de fichier ont été rencontrées,OptionsAExact.,OptionsB、cErreur;fscanf)La fonction ne peut importer des données en mémoire qu'à partir d'un fichier texte,OptionsDErreur; La réponse à cette question est: A.
 

No2Questions: C'est vrai. ().
A、 La valeur du pointeur de fichier est la longueur du fichier (En octets)

B、La valeur du pointeur de fichier est la première adresse où la chaîne de nom de fichier est stockée

C、 Le pointeur de fichier est une variable de type pointeur

D、fscanfLa fonction peut écrire n'importe quel caractère spécifié dans n'importe quel fichier spécifié

Résolution de référence :【Analyse】Un pointeur de fichier est en fait un pointeur vers un type de structure, Cette structure contient des éléments tels que: :Adresse du tampon、Emplacement des caractères actuellement accessibles dans le tampon、 Oui, le dossier. “ Lire ou “Écris."、Si une erreur s'est produite、Si des informations telles que le drapeau de fin de fichier ont été rencontrées,OptionsCExact.,OptionsA、BErreur;fscanf()La fonction ne peut importer des données en mémoire qu'à partir d'un fichier texte,OptionsDErreur; La réponse à cette question est: C.

No3Questions: Ce qui est vrai dans ce qui suit
A、C Les fichiers dans la langue sont des fichiers de streaming , Par conséquent, les données ne peuvent être accessibles que séquentiellement

B、Après avoir ouvert un fichier existant et écrit,Toutes les données du fichier original doivent être écrasées

C、 Dans un programme , Si le fichier est écrit , Doit être éteint en premier i Fermez le fichier et ouvrez - le à nouveau. , Pour lire 1Données

D、 Lecture des documents (Écris.)Après l'opération, Il doit être éteint. , Cela peut entraîner une perte de données

Résolution de référence :【Analyse】InCDans la langue, Il existe deux façons d'accéder aux fichiers : Accès séquentiel et direct .Si"a"”Après avoir écrit un fichier ouvert, Le contenu du fichier original sera sauvegardé , Les nouvelles données sont écrites après le contenu original .Si“a+”Pour ouvrir un fichier pour les opérations de lecture et d'écriture, Vous pouvez lire le fichier /Écris.,Et il n'est pas nécessaire de fermer le fichier entre les opérations de lecture et d'écriture. Peut être lu à partir de l'achat . Lors de la lecture d'un fichier (Écris.)Une fois l'opération terminée, Il doit être éteint. . La réponse à cette question est: DOptions.
 

No4Questions: C'est vrai.
A、Le pointeur de fichier indique l'adresse octet à laquelle le fichier est actuellement en cours de traitement

B、La variable de pointeur de fichier contient le nombre de caractères contenus dans le fichier référencé

C、 La valeur dans la variable de pointeur de fichier est constante ,Impossible de modifier

D、 Le type de variable de pointeur de fichier est FILE*

Résolution de référence :【Analyse】InCPointer vers un fichier avec une variable pointeur dans la langue,Ce pointeur s'appelle un pointeur de fichier.Le pointeur de fichier vous permet d'effectuer diverses opérations sur le fichier auquel il se réfère. Le type de variable de pointeur de fichier est FILE*. La réponse à cette question est: DOptions.

No5Questions: C'est vrai.
A、La variable du pointeur de fichier contient des informations sur l'emplacement du fichier sur le disque dur

B、Le type de variable de pointeur de fichier est le type de pointeur

C、La variable pointeur de fichier pointe vers l'adresse mémoire de la chaîne nom de fichier

D、Le pointeur de fichier indique l'adresse octet à laquelle le fichier est actuellement en cours de traitement

Résolution de référence :【Analyse】InCPointer vers un fichier avec une variable pointeur dans la langue,Ce pointeur s'appelle un pointeur de fichier.Le pointeur de fichier vous permet d'effectuer diverses opérations sur le fichier auquel il se réfère.Ce pointeur est la première adresse utilisée pour stocker les fichiers.Ce pointeur est spécialement conçu pour pointer vers les fichiers.Le type de variable de pointeur de fichier est le type de pointeur. La réponse à cette question est: BOptions.

3,Ouverture et fermeture des fichiers

No1Questions: Définir le pointeur de fichier fpDéfini,Exécution des déclarationsfp=fopen("file" "w");Après, Pour les fichiers texte file Ce qui est correct dans les options décrites dans l'opération est No1Questions: Définir le pointeur de fichier FPDéfini,Exécution des déclarationsfp=fopen(Documentation“w”);Après,Parmi les options décrites ci - dessous pour les opérations de fichiers texte, il y a
A、 Je peux écrire, je ne peux pas lire. 、 Je peux écrire, je ne peux pas lire.

B、Une fois l'opération d'écriture terminée, elle peut être lue à partir de zéro

C、 Peut être ajouté après le contenu original

D、 Lire et écrire à volonté
Résolution de référence :【Analyse】 Examiner les fonctions d'exploitation des fichiers fopenLes bases de,Par"w" Ouvrir le fichier par , Je peux écrire, je ne peux pas lire. . 

No2Questions:Ce qui suit concernefclose(fp) La description de la fonction est correcte No2Questions:Ce qui suit concerneflose(FP) La description de la fonction est correcte
A、Lorsque toutes les opérations d'écriture du fichier dans le programme sont terminées,Doit être appeléfclose(fp) Fonction fermer le fichier

B、Lorsque toutes les opérations d'écriture du fichier dans le programme sont terminées, Il n'est pas nécessaire d'appeler flose(FP) Fonction fermer le fichier

C 、 Seulement après l'entrée du fichier , Besoin d'appeler flose(FP) Fonction fermer le fichier

D、 Seulement après l'opération de sortie du fichier ,Pour appelerfclose(fp) Fonction fermer le fichier  

Résolution de référence ︰【Analyse】 Une fois l'opération sur un fichier terminée , Pour fermer le fichier ,“Fermer′Est de faire en sorte que la variable du pointeur de fichier ne pointe plus vers le fichier.L'auteur du programme doit fermer tous les fichiers avant la fin du programme,Si elle n'est pas fermée, Le fichier perdra des données .Parce que, Lors de l'écriture de données dans un fichier , Oui, les données sont d'abord sorties dans le tampon inverse ,Attendre que le tampon soit plein avant de sortir officiellement dans le fichier.Si le programme se termine lorsque les données ne sont pas remplies de tampon, Perte de données dans le tampon .Avecfclose Fonction fermer le fichier , Ce problème peut être évité ,Il affiche d'abord les données du tampon dans un fichier disque, Les variables du pointeur de fichier sont ensuite libérées .Vous devez donc fermer le fichier une fois que toutes les opérations d'écriture sur le fichier sont terminées,A Les options sont correctes ,B Erreur d'option . Dès que vous travaillez sur le fichier ,Tout est appeléfclose Fichier fermer le fichier ,C、D Erreur d'entrée . 

Résolution de référence ∶【Analyse】fopenLa correspondance ouvre le fichier spécifié d'une certaine manière, Renvoie un pointeur de fichier vers un fichier ,Si l'ouverture du fichier spécifié n'est pas possible,Renvoie un pointeur videNULL.Si le fichier spécifié n'existe pas, créez un nouveau fichier avec le nom de fichier spécifié, Et l'ouvrir .En cas d'erreur dans le fichier spécifié ou si le fichier spécifié n'existe pas et qu'un nouveau fichier ne peut pas être créé, Erreur d'ouverture du fichier ,Renvoie un pointeur nul. Dans cette procédure ,Documentationtest.txtN'existe pas, Mais aucune autre exception , Indique qu'un nouveau fichier peut être créé ,Nommétest.txt,C La description du lavage est correcte , Et l'ouvrir en écriture seulement ,D Description correcte des options , Renvoie le pointeur vers la partie touchée ,ifConditions non remplies,Produits“ Fichier ouvert avec succès !”,B Description correcte des options ,A Erreur de description de l'option .Alors choisissezAOptions.

  Résolution de référence ︰【Analyse】fopenLa fonction ouvre le fichier spécifié d'une certaine manière, Renvoie un pointeur de fichier vers un fichier ,Si l'ouverture du fichier spécifié n'est pas possible,Renvoie un pointeur videNULL.Si le fichier spécifié n'existe pas, créez un nouveau fichier avec le nom de fichier spécifié, Et l'ouvrir .En cas d'erreur dans le fichier spécifié ou si le fichier spécifié n'existe pas et qu'un nouveau fichier ne peut pas être créé, Erreur d'ouverture du fichier ,Renvoie un pointeur nul. Dans cette procédure ,Documentationtest.txtN'existe pas, Mais aucune autre exception , Indique qu'un nouveau fichier peut être créé ,Nommétest.txt,C Description correcte des options , Et l'ouvrir en écriture seulement ,D Description correcte des options , Renvoie le pointeur vers le fichier ,ifConditions non remplies,Produits“ Fichier ouvert avec succès !”,B Description correcte des options ,A Erreur de description de l'option .Alors choisissezAOptions.

Résolution de référence ︰【Analyse】fopenLa lettre ouvre le fichier spécifié d'une certaine manière, Renvoie un pointeur de fichier vers un fichier ,Si l'ouverture du fichier spécifié n'est pas possible,Renvoie un pointeur videNULL.Si le fichier spécifié n'existe pas, créez un nouveau fichier avec le nom de fichier spécifié, Et l'ouvrir .En cas d'erreur dans le fichier spécifié ou si le fichier spécifié n'existe pas et qu'un nouveau fichier ne peut pas être créé, Erreur d'ouverture du fichier ,Renvoie un pointeur nul. Dans cette procédure ,Documentationtest.txtExiste déjà,Après l'exécution du programme,Documentationtest.txt Le contenu original disparaîtra ,A Les options sont correctes . Le document existe déjà. , Ne provoque pas d'erreur de programme , Ouvre le fichier comme spécifié ,B Erreur d'option . Écrire des fichiers ,L'écriture ne peut être faite que sur le contenu de la position pointée par le pointeur, Impossible de lire et d'écrire au hasard ,C Erreur d'option .Documentstest.txtLe contenu écrit est écrit au BIT auquel le pointeur pointe, Au lieu d'ajouter à la fin du fichier ,D Erreur de nettoyage .

4,Lecture et écriture des documents

No1Questions:La forme de l'appel de fonction pour lire le binaire est:fread(buffer,size,count,fp);,Parmi euxbufferReprésentant:(). No1Questions:La forme de l'appel de fonction pour lire le binaire est:Fread(Tampon、Taille、Nombre、FP); Où le tampon représente ().
A、 Nombre d'octets par bloc de mémoire 、 Nombre d'octets par bloc de mémoire

B、Une variable entière, Nombre d'octets représentant les données à lire  

C、 Un pointeur de fichier , Pointer vers le fichier à lire  

D、 Première adresse d'un bloc de mémoire , Représente l'adresse où les données sont lues

Résolution de référence :【Analyse】fread(void *buffer,size t size,size t count,FILE *stream);La fonction est de lire les données d'un flux de fichiers,LirecountÉléments,Chaque élémentsizeOctets, Si l'appel est retourné avec succès count. Résolution de référence :[Analyse]Fread(void*Tampon,TailletTaille,TailletNombre,Documentation*Flow);La fonction est de lire les données d'un flux de fichiers, Lire les éléments de comptage , Taille de chaque élément octets , Compte retourné si l'appel réussit .
buffer : Adresse mémoire utilisée pour recevoir les données , La taille est au moins size*countOctets;size: Taille des éléments individuels ,En octets; Tampon: Adresse mémoire utilisée pour recevoir les données , La taille est au moins la taille * Nombre d'octets ;Taille: Taille des éléments individuels ,En octets;
count:Nombre d'éléments,Chaque élément estsizeOctets;stream:Flux d'entrée. count:Nombre d'éléments,Chaque élément estsizeOctets;stream:Flux d'entrée.


  Résolution de référence :【Analyse】 Le programme commence par un tableau a[10]Éléments dans1、2、3 Fichiers écrits séparément d1.datDans le document, Et ensuite, d1.datDonnées dans le fichier123, L'ensemble est écrit à la variable nDans l'espace,Alors imprimez.n Les données de sortie sont: 123.

  Résolution de référence :【Analyse】fprintf) Sortie de la fonction vers le fichier ,Exporter la sortie vers un fichier sur votre disque dur ou un périphérique équivalent à un fichier deux foisfnrint Dans le fichier suivant 123 456,Alors...D Les options sont correctes .

  Résolution de référence :【Analyse】 Cette question examine la fonction de fonctionnement du fichier ,Deux foisfwriteAprès,p Écrit dans le fichier 1.2,3,0,0.1.2,3.0.0Ensuite, vous mettez le fichierp Contenu réécrit dans le tableau aMoyenne,La sortie finaleaPour1,2,3,0,0,1,2,3,0,0,Donc les optionsDExact..

See You!!!!! 

版权声明
本文为[- Non.]所创,转载请带上原文链接,感谢
https://chowdera.com/2021/10/20211013211336210n.html

随机推荐