Manipulation d'un fichier (lecture, ecriture)

Contenu du snippet

C'est un petit programme en c qui permet de créer, modifier ou consulter un fichier ... il permet egalement de compter le nombre de mot que le fichier contient...etc...

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>

char nom;
char mot;
char nf[81];

FILE * entree; //flux associe au fichier à creer

//procédure permettant la saisie dans un fichier existant
void modif (char nf[81])
{

		entree = fopen (nf, "r+");//ouvre le fichier en mode MIS A JOUR

		if (!entree)//on quitte lors d'une erreur a l'ouverture du fichier
		{
			printf ("*** Impossible d'ouvrir le fichier ***");
			exit(-1);
		}

		fseek(entree, 0, SEEK_END);//se place en fin de fichier
		printf ("Saisir la liste des mots (* pour finir)");
		fseek(entree, 0, SEEK_CUR);
		while (mot != '*')
		{
			scanf ("%c", &mot);
			fprintf(entree, "%c", mot);
		}
}

//procedure permettant la création et la saisie dans un nouveau fichier
void cree (char nf[81])
{

		entree = fopen (nf, "w");//ouvre le fichier en mode ECRITURE

		printf ("Saisir la liste des mots (* pour finir)");

		while (mot != '*')
		{
			scanf ("%c", &mot);
			fprintf(entree, "%c", mot);
		}
}

//procedure permettant les différentes applications de consultations du fichier
void consult (char nf[81])
{
	//menu de choix de la consultation
	int p;
	int nb = 0;
	consultation :puts("\n  ***   MENU CONSULTATION   ***  ");
	            puts("\n  {1} AFFICHAGE du fichier\n");
	              puts("  {2} NOMBRE de modification depuis sa creation\n");
				  puts("  {3} RECHERCHE de la définition dans le DICO\n");
	scanf ("%d",&p);

	entree = fopen (nf, "r");

	switch(p)
	{
		case 1 ://affichage du fichier en son intégralité
		puts("\n *** DEBUT DE FICHIER ***");
		while (1)
		{
			fscanf (entree , "%c", &mot);
			if (feof (entree))break;

			//enlève a l'affichage tous les '*' saisies
			if (mot != '*')printf("%c", mot);
		}
		puts("\n *** FIN  DE  FICHIER ***");
		break; //fin du case 1

		case 2 :
		//NOMBRE de modifications depuis sa création
		while (1)
		{
			fscanf (entree , "%c", &mot);
			if (feof (entree))break;
			if (mot == '*')
			{
				nb++;
				break;
			}
		}
			printf ("\n *** Le fichier a ete modifier %d fois *** ",nb+1);
		break;  //fin du case 2

		//si erreur de saisie
		default :
		printf("\n MAUVAISE saisie \n");
		goto consultation;//retourne au menu de consultation
	}

}

main ()
{
    //Nom du fichier à ouvrir
	int p;
	general :puts("\n  ***    MENU GENERAL    ***  ");
	         puts("\n  {1} CREATION d'un fichier ");
	         puts("  {2} MODIFICATION d'un fichier ");
	         puts("  {3} CONSULTATION d'un fichier ");

	puts ("\nATTENTION SI VOUS TAPER c LES DONNEES D UN FICHIER EXISTANT SERONT DETRUITES !!!!\n");
	scanf("%d",&p);

	switch (p)//varie selon le choix (consult, modif, creation)
	{
		case 1:
		printf ("  *** Nom du fichier a creer ***\n\n");
		break;

		case 2:
		printf ("  *** Nom du fichier a modifier ***\n\n");
		break;

		case 3:
		printf ("  *** Nom du fichier a consulter ***\n\n");
		break;

		//si erreur de saisie
		default :
		printf("\n MAUVAISE saisie \n");
		goto general;//retourne au menu general
	}
	scanf ("%80s", nf);
	printf("\n");

	switch (p)
	{
		case 1://on modifie le contenu du fichier
		cree(nf);
		break;

		case 2://On cree un nouveau fichier
		modif(nf);
		break;

		case 3://on consulte le contenu du fichier
		consult(nf);
		break;
	}
	//fermeture du fichier
	fclose(entree);
	int xx;
	scanf("%d",xx);
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.