Résumé de l'apprentissage du langage C _10 opération de fichier

Plusieurs points de connaissance résumés cette fois
1. Pourquoi utiliser un fichier
2. Qu'est-ce qu'un fichier
3. Ouvrir et fermer le
fichier 4. La lecture et l'écriture séquentielles
du fichier 5. La lecture et l'écriture aléatoires
du fichier 6. La classification
des le fichier 7. La fin du fichier lecture du jugement
8, tampon de fichier


1. Pourquoi utiliser des fichiers?
Lorsque nous utilisons c pour écrire une petite application du carnet d'adresses, lorsque le programme de carnet d'adresses se termine, les données qu'il contient n'existent pas. Lorsque le programme est exécuté la prochaine fois, il doit être ressaisi. N'est-ce pas inconfortable Les données ne peuvent-elles pas être placées dans un endroit où elles peuvent être stockées en permanence? Cela implique le problème de la persistance des données, comme le stockage des données sur des disques ou des bases de données.
À l'aide de fichiers, nous pouvons placer les données directement sur le disque dur de l'ordinateur pour obtenir la persistance des données.
2. Qu'est-ce qu'un fichier?
Fichier = Contenu + Attributs
Dans la conception du programme, il est divisé en: fichiers programme et fichiers de données
2.1, fichiers programme Les fichiers
programme se terminent par .c, se terminent par .obj et se terminent par .exe.
2.2. Fichier de données
Le contenu du fichier n'est pas nécessairement le programme, mais les données lues et écrites lorsque le programme est en cours d'exécution, telles que le fichier qui doit lire les données lorsque le programme est en cours d'exécution, ou le fichier qui génère le contenu .
2.3 Nom de
fichier Un fichier doit avoir un identifiant de fichier unique que les utilisateurs peuvent identifier et citer.
Le nom de fichier se compose de 3 parties: chemin du fichier + nom de fichier tronc + suffixe de fichier
3. Ouverture et fermeture de
fichier 3.1 Pointeur de fichier
Chaque fichier utilisé a ouvert une zone d'informations de fichier correspondante dans la mémoire pour stocker les informations de fichier associées (telles que: le nom du fichier, l'état du fichier, l'emplacement actuel du fichier, etc.) Ces informations sont stockées dans une variable de structure, le type de structure est déclaré par le système, nommé FILE.
Par exemple, le FILE* pf;
définition de pf est une variable de pointeur (pointeur de structure) pour les données de type FILE. Le fichier est accessible via les informations de la zone d'informations sur le fichier. En d'autres termes, le fichier qui lui est associé peut être trouvé via la variable de pointeur de fichier.
Fichier = contenu du fichier + attributs de fichier
3.2
Le fichier doit être ouvert avant la lecture et l'écriture, et le fichier doit être fermé après utilisation.
Lors de l'écriture d'un programme, à l'ouverture du fichier, une variable de pointeur de FILE * sera renvoyée pour pointer vers le fichier, ce qui équivaut à établir la relation entre le pointeur et le fichier.
Utilisez fopen pour ouvrir le fichier, fclose pour fermer le fichier
Insérez la description de l'image ici

int main()
{
    
    
	FILE* pf = fopen("myfile.txt", "a");
	if (pf == NULL)
	{
    
    
		printf("File open error!\n");
		system("pause");
		return 1;
	}
	else{
    
    
		fputs("不是个梦!", pf);
		fclose(pf);
	}
	system("pause");
	return 0;
}

Le premier paramètre formel est le nom du fichier et le second est le mode ouvert. Veuillez vous référer à http://www.cplusplus.com/reference/cstdio/fopen/?kw=fopen.
4. Séquence de fichiers lecture et écriture de
saisie de caractères et fonctions de sortie: fonctions d'
entrée et de sortie de ligne de texte Fgetc / fputc: fonctions d' entrée et de sortie
formatées fgets / fputs: entrée et sortie
binaires fscanf / fprintf: fread / fwrite
nous pouvons utiliser fprintf pour simuler le
langage printf c ouvrira 3 entrées et sorties standard streams par défaut, et leurs types sont également respectivement For FILE *:
stdin -------> standard input
stdout -----> display
stderr ------> display
Tout est un fichier.

int main()
{
    
    
	fprintf(stdout, "chenzhihao is %s\n", "xiao ke ai!");
	system("pause");
	return 0;
}

5. Lecture et écriture aléatoires (position) du
fichier fseek: localiser le pointeur de fichier en fonction de la position et de l'offset du fichier
ftell: retourne l'offset du fichier par rapport à la position de départ
rembobinage: laisse le fichier lire et écrire la position retour au début du fichier Position de départ.
Pour plus de détails, veuillez vous référer à ce qui suit:
http://www.cplusplus.com/reference/cstdio/fseek/?kw=fseek
6. Classification des fichiers
Selon la forme d'organisation des données, les fichiers de données sont convertis en fichiers texte ou des fichiers binaires.
Les données sont stockées dans la mémoire sous forme binaire. Si elles sont sorties vers la mémoire externe sans conversion, il s'agit d'un fichier binaire.
S'il est nécessaire de stocker sous forme de code ASCII sur la mémoire externe, il doit être converti avant l'école du village. Un fichier stocké sous forme de code ASCII est un fichier texte.
7. Jugement de la fin de la lecture du fichier. N'oubliez pas
que feof est mal utilisé
: lors de la lecture du fichier, la valeur de retour de la fonction feof ne peut pas être utilisée directement pour juger si le fichier est terminé, mais elle est appliquée lorsque le fichier la lecture se termine. Il est jugé si la fin de la lecture échoue ou si la fin du fichier est rencontrée.
1) Si la lecture du fichier texte est terminée, jugez si la valeur de retour est EOF (fgetc) ou NULL (fgets)
, c'est-à-dire:
fetc juge si c'est EOF
fgets juge si la valeur de retour est NULL
2)
Si le fichier binaire la lecture est terminée est jugée: détermine si la valeur de retour u est inférieure au nombre à lire.
fread détermine si la valeur renvoyée est inférieure au nombre réel à lire.
Le code du fichier texte est le suivant:

int main()
{
    
    
	FILE* pf;
	int n = 0;
    pf = fopen("czh.txt", "r");
	if (NULL == pf){
    
    
		puts("File Open error!");
	}
	else{
    
    
		while (fgetc(pf) != EOF){
    
    
			n++;
		}
		//程序走到这里证明跳出循环,也就是文件读取结束,然后要feof判断
		//读取结束的原因
		if (feof(pf)){
    
    
			printf("文件总字符数为:%d\n", n);
		}
		else{
    
    
			puts("End of file is not reached!");
		}
		fclose(pf);
	}


	system("pause");
	return 0;
}

Exemples de fichiers binaires:

#define SIZE 10
int main()
{
    
    
	//二进制文件文件的读写
	double a[SIZE] = {
    
     3.10, 3.11, 3.12, 3.13, 3.14, 3.15, 3.16, 3.17, 3.18, 3.19 };
	FILE* pf = fopen("data.txt", "wb");
	if (pf == NULL){
    
    
		puts("File open error!");
	}
	else{
    
    
		fwrite(a, sizeof(double), SIZE, pf);
		fclose(pf);
	}
	pf = fopen("data.txt", "rb");
	if (pf == NULL){
    
    
		puts("File open error!");
	}
	else{
    
    
		double b[3] = {
    
     0.0 };//缓冲区
		while (1){
    
    
		   size_t s=fread(b, sizeof(double), 3, pf);
		   if (s < 3){
    
    
			   break;
		   }
		   //对读到的元素进行操作
		}
		if (feof(pf)){
    
    
			puts("read file of end....!");
		}
		/*while (fread(b, sizeof(double), 3, pf)>0)
		{
			for (int i = 0; i < 3; i++){
				printf("%f\n", b[i]);
			}
		}*/
		fclose(pf);
	}
	system("pause");
	return 0;
}

ou:

int main()
{
    
    
	//二进制文件文件的读写
	double a[SIZE] = {
    
     3.10, 3.11, 3.12, 3.13, 3.14, 3.15, 3.16, 3.17, 3.18, 3.19 };
	FILE* pf = fopen("data.txt", "wb+");
	if (pf == NULL)
	{
    
    
		puts("File open error!");
	}
	else
	{
    
    
		fwrite(a, sizeof(double), SIZE, pf);
		//int pos_0 = ftell(pf);
		//printf("pos_0 = %d\n", pos_0);
		rewind(pf);//让文件读取位置回到其实位置,避免重新关闭和打开
		//int pos_1  = ftell(pf);
		//printf("pos_1 = %d\n", pos_1);
		double b[3] = {
    
     0.0 };//读缓冲区
		while (1)
		{
    
    
			size_t s = fread(b, sizeof(double), 3, pf);
			if (s < 3)
			{
    
    
				break;
			}
		}
		if (feof(pf))
		{
    
    
			puts("End of file is reached!\n");
		}
		else
		{
    
    
			puts("file read error!");
		}
		fclose(pf);
	}
	
	system("pause");
	return 0;
}

8. Le
programme de tampon de fichier c fournit un mécanisme de tampon par défaut. Le mécanisme dit tampon est un tampon. Le tampon est essentiellement un morceau de mémoire. Sa valeur d'existence est d'améliorer l'efficacité. Vous pouvez le comprendre comme une livraison express.
Les mécanismes de mise en mémoire tampon courants sont: 1) Pas de mise en mémoire tampon 2) Mise en mémoire tampon de la
ligne 3) Mise en mémoire tampon complète Mise en mémoire tampon de la ligne: utilisez des symboles spéciaux comme marque de rafraîchissement de la mémoire tampon tels que "\ n",
mise en mémoire tampon complète: rafraîchit la mémoire tampon lorsque la mémoire tampon est pleine, rafraîchissement forcé, Le programme se termine.
Les fichiers d'affichage sont tamponnés en ligne et sans tampon,
les fichiers ordinaires sont entièrement tamponnés

Je suppose que tu aimes

Origine blog.csdn.net/CZHLNN/article/details/110238501
conseillé
Classement