Vous êtes sur la page 1sur 10

Commenté [AB1]: Les fichiers c’est une des bases de

I. l’algorithme en générale je vous le garantie les gars.


II.
III. Commenté [AB2]: La meilleure des façons c’est de la
IV. pratiquée quasiment tous les jours.
V.
VI. Recherche d’un élément
Exercice : on va écrire un programme qui permet de rechercher un étudiant dans un autre fichier étudiant à
partir de son matricule.
Ouvrir (fric) en mode lecture
Lire (fic, Etd)
Tant que (ff (fic) = faux ET Etd.mat≠ mat) faire
Lire (fic, Etd)
Fin tant que
………………………………………………………………………………….
/*recherche*/
Afficher (« veuillez saisir le matricule à rechercher »)
Lire (mat)
/*Ouvrir le fichier en lecture*/
Ouvrir (fic) en lecture
Lire (fic, Etd)
Tant que (ff (fic) ≠ Vrai ET Etd.mat) faire
Lire (fic, Etd)
Si (Etd.mat = mat) alors
Afficher (« Matricule : », Etd.mat)
Afficher (« Nom : », Etd.nom)
Afficher (« Prénom : », Etd.prénom)
Sinon
Afficher (« ce matricule n’existe pas »)
Fin si
/*Fermer le fichier*/
Fermer (fic)
…………………………………………………………………………………..
EN LANGAGE C :
/*recherche*/
Printf (« veuillez saisir le matricule à rechercher »)
Scanf (« %d », & mat) ;
/*Ouvrir le fichier en lecture*/
Fic= fopen (« fichierEtudiant. Txt », « r ») ;
If (fic== NULL)
{
Printf (« problème d’ouverture du fichier\n ») ;
}
Else
{
While (fscanf (fic, « %d %s %s », &Etd.mat, &Etd.nom, &Etd.prenom) != EOF && Etd.mat != mat)
{
}
If (Etd.mat == mat)
{
Printf (« Matricule : %d », Etd.mat) ;
Printf (« Nom : %s », Etd.nom) ;

LES FICHIERS | Aliou Baldé


Printf (« Prénom : %s », Etd.prenom) ;
}
Else
{
Printf (« ce matricule n’existe pas ») ;
}
/*fermeture du fichier*/
Fclose (fic) ;
Exercice :
On va écrire un programme qui permet de rechercher un produit dans un fichier de produit.
# Include<stdio.h>
# Include< stdlib.h>
/*déclaration de la structure*/
Struct produits
{
Int codepro ;
Char libelle [20] ;
Int pu ;
Int qtes ;
};
Typedef struct produits produit ;
Main ()
{
FILE * fic =NULL ;
Int code R ;
/*Déclaration du fichier*/
/*Ouverture du fichier en mode écriture*/
Fic= fopen (« fichierproduit. Txt », « w ») ;
Printf (« veuillez saisir le code du produit ou -1 pour arrêter la saisie \n ») ;
Scanf (« %d » ; & prod.codepro) ;
While (prod.codepro != -1)
{
Fflush (stdin) ;
Printf (« veuillez saisir libelle\n ») ;
Gets (prod.libelle) ;
Printf (« veuillez saisir le prix unitaire\n) ;
Scanf (« %d », &prod.pu) ;
Printf (« veuillez saisir la quantité \n ») ;
Scanf (« %d », &prod.qtes) ;
/*écriture de l’enregistrement dans le fichier */
Fprintf (fic, « %d %s %d %d\n », prod.qtes) ;
/*passer au produit suivant*/
Printf (« veuillez saisir un autre code de produit ou -1 pour arrêter la saisie\n ») ;
Scanf (« %d », &prod.codepro) ;
}
/*Fermeture du fichier*/
Fclose (fic) ;
/*recherche*/
Printf (« veuillez saisir le code du produit à rechercher\n » ;
Scanf (« %d », &code R) ;
fR= fopen (« fichierproduit. Txt », « r ») ;
If (fR== NULL)
{
Printf (« Problème d’ouverture du fichier\n ») ;
}
Else
{

LES FICHIERS | Aliou Baldé


/*recherche*/
While (fscanf (fic, « %d %s %d %d », & prod.codepro, &prod.libelle, &prod.pu, &prod.qtes) != EOF &&
prod.codepro != codeR)
{
}
If (prod.codepro == codeR)
{
Printf (« CODE PRODUIT : %d:\n », prod.codepro) ;
Printf (« LIBELLE : %s:\n », prod.libelle) ;
Printf (« PRIX UNITAIRE : %d:\n », prod.pu) ;
Printf (« QUANTITE : %d:\n », prod.qtes) ;
}
Else
{
Printf (« le produit que vous recherchez n’existe pas dans le fichier\n ») ;
}
}
Fclose (fic) ;
}
/*FIN DU PROGRAMME*/
…………………………………………………………………………………………………………………………………….
ALGORITHME :
Exercice :
Ecrire un code qui permet d’afficher tous les quantités stock est inférieurs à la quantité seuils.
/*recherche*/
/*ouverture du fichier*/
Ouvrir (fic) en lecture
Lire (fic, prod)
Tant que (ff (fic) ≠ Vrai) faire
Si (prod.qte stock< prod.qte seuil) alors
Afficher (« code : », prod. codepro)
Afficher (« libelle : », prod.libelle)
Afficher (« qte stock : », prod.qte stock)
Afficher (« qte seuil : », prod.qte seuil)
Test++
Fin si
Fin tant que
/*fermeture du fichier*/
Fermer (fic)
………………………………………………………………………………………………………………………………………
TRADUCTION EN LANGAGE C
/* recherche*/
Fic= fopen (« fichier produit.txt », « r ») ;
If (fic== NULL)
{
Printf (« problème d’ouverture du fichier \n») ;
}
Else
{
While (fscanf (fic, « %d %s %d %d %d», &prod. codepro, &prod. libelle, &pro. Pu, &prod.qte stock, &prod.qte
seuil) != EOF)
{
If (prod. qte stock < prod. qte seuil)
{
Printf (« code : %d\n », prod. codepro) ;
Printf (« libelle : %s\n », prod. libelle) ;
Printf (« qte stock : %d\n », prod. qte stock) ;

LES FICHIERS | Aliou Baldé


Printf (« qte seuil : %d\n », prod. qte seuil) ;
Printf (« prix unitaire : %d\n », prod. pu) ;
Printf (« \n\n ») ;
}
}
/*Fermeture du fichier*/
Fclose (fic) ;
Exercice :
On va écrire un programme qui permet de créer un fichier de produit dont chaque produit est caractérisé par
un code, libelle, prix unitaire, quantité stock, quantité seuil.
Le programme doit afficher tous les produits en rupture de stock.

/* recherche*/
Fic= fopen (« fichier produit.txt », « r ») ;
If (fic== NULL)
{
Printf (« problème d’ouverture du fichier \n») ;
}
Else
{
While (fscanf (fic, « %d %s %d %d %d», &prod. codepro, &prod. libelle, &pro. Pu, &prod.qte stock, &prod.qte
seuil) != EOF)
{
If (prod. qte stock < prod. qte seuil)
{
Printf (« code : %d\n », prod. codepro) ;
Printf (« libelle : %s\n », prod. libelle) ;
Printf (« qte stock : %d\n », prod. qte stock) ;
Printf (« qte seuil : %d\n », prod. qte seuil) ;
Printf (« prix unitaire : %d\n », prod. pu) ;
Printf (« \n\n ») ;
}
}
}
/*Fermeture du fichier*/
Fclose (fic) ;
- Modication d’un élément du fichier
Pour modifier un enregistrement on recherche d’abord cet enregistrement et si on le trouve, on utilise la fonction
réécrire (Nom_fichier, nom_enregistrement). C’est donc la fonction réécrire qui permet la modification d’un
enregistrement d’un du fichier.
Exercice :
Soit fic un fichier de produit dont chaque produit est caractérisé par un code, un libelle, un prix unitaire et sa
quantité.
Ecrire un code qui permet de modifier les informations d’un produit à partir de son code.
/* ouverture du fichier */
Ouvrir (fic) en lecture / écriture
Lire (fic, prod)
Afficher (« veuillez saisir le code du produit à rechercher »)
Lire (code)
Tant que (ff (fic) ≠Vrai Et pro. Codepro code) ≠faire
/* passer au produit suivant*/
Lire (fic, prod)
Fin tant que
Si (prod. codepro = code) alors
/* Saisie des nouvelles informations */
Afficher (« veuillez saisir le libelle »)
Lire (prod. libelle)

LES FICHIERS | Aliou Baldé


Afficher (« veuillez saisir la quantité »)
Lire (prod. qte)
Afficher (« veuillez saisir le prix unitaire »)
Lire (prod. pu)
/* Réécrire l’enregistrement dans le fichier*/
Réécrire (fic, prod)
Sinon
Afficher (« ce code n’existe pas »)
Fin sinon
/* Fermeture du fichier*/
Fermer (fic)
……………………………………………………………………………………………………………………….
Traduction en langage C
#include<stdio.h>
#include<stdlib.h>
/*déclaration de la structure*/
Struct products
{
Int codepro ;
Char libelle [20] ;
Int pu ;
Int qte ;
};
Typedef struct produits produit;
Main ()
{
FILE * fic1 = NULL ;
FILE * fic2 = NULL ;
Produit prod ;
Int codeR ;
/*Création du fichier*/
/*Ouverture du fichier*/
Fic =fopen (« fichier1=txt », « w ») ;
Printf (« veuillez saisir le code du produit ou -1 pour arrêter la saisie\n » ;
Scanf (« %d », &prod. codepro) ;
While (prod. codepro !==-1)
{
Fflush (stdin) ;
Printf (« veuillez saisir le libelle\n »)
Gets (prod. libelle) ;
Printf (« veuillez saisir le prix unitaire\n ») ;
Scanf (prod. pu) ;
Printf (« veuillez saisir la quantité\n ») ;
Scanf (prod. qte) ;
/*Ecriture de l’enregistrement dans le premier fichier*/
Fprintf (fic1, « %d %s %d %d\n », &prod. codepro, &prod. libelle, &prod. pu, &prod. qte) ;
/*Passer au produit suivant*/
Printf (« saisir un autre code ou -1 pour arrêter la saisie:\n ») ;
Scanf (« %d », &prod. codepro) ;
};
/*Fermeture du fichier*/
Fclose (fic1) ;
/* Recherche du produit à modifier dans le fichier*/
Printf (« veuillez saisir le code du produit à modifier ») ;
Scanf (« %d », & codeR) ;
/*Ouverture du fichier1 en lecture*/
Fic1= fopen (« fichier1=txt », « r ») ;

LES FICHIERS | Aliou Baldé


/* ouverture du fichier en écriture*/
Fic2= fopen (« fichier2.txt », « w ») ;
/* Tester si le fichier1 est bien ouvert*/
If (fic1==NULL)
{
/*Le fichier n’est pas ouvert*/
Printf (« le problème d’ouverture du fichier\n ») ;
};
Else
{
/*Le fichier est bien ouvert*/
While (fscanf (fic1 « %d % s %d %d », &prod. codepro, &prod. libelle, & prod. pu, &prod. qte ! = EOF)
{
If (prod. codepro ! = codeR)
{
/*Ecrire l’enregistrement dans le fichier2*/
Fprintf (fic2, « %d %s %d %d\n », prod. codepro, prod. libelle, prod. pu, prod. qte) ;
};
Else
{
/*On a trouvé l’enregistrement à modifier dans le fichier */
Printf (« veuillez saisir le libelle\n ») ;
Gets (prod. libelle) ;
Printf « veuillez saisir le prix unitaire\n) ;
Scanf (« %d », prod. pu) ;
Printf (« veuillez saisir la quantité\n ») ;
Scanf (« %d », prod. qte) ;
/*Ecrire l’enregistrement dans le fichier2*/
Fprintf (fic2, « %d %s %d %d\n », prod. codepro, prod. libelle, prod. pu, prod. qte) ;
/*Fermeture du fichier1*/
Fclose (fic2) ;
/*Suppression du fichier1*/
Remove (« fichier1.txt ») ;;
/*Renommer le fichier2 en fichier1*/
Rename (« fichier2.txt », « fichier1.txt ») ;
};
Exercice :
Soit (fic) un fichier de produit un fichier caractérisé par code, prix unitaire, libelle, quantité, stock et quantité
seuil. Ecrire le code qui permet de mettre à jour tous les produits en rupture de stock. Un produit est dit en
rupture de stock si sa quantité stock est inférieure à sa quantité seuil.
/*ouverture du fichier du mode lecture/écriture*/
Ouvrir (fic) en lecture/écriture
Lire (fic, prod)
Tant que (ff (fic) ≠Vrai) faire
Si (prod. qtes<prod. qteseuil) alors
Afficher (« libelle : », prod. libelle)
Afficher (« veuillez saisir la qte à augmenter »)
Lire (a)
/*Modification de la qte stock*/
Prod. Qtes prod. Qtes ≠ a
/*Réécrire le produit dans le fichier*/
Réécrire (fic, prod)
Fin si
/* Passer au produit suivant*/
Lire (fic, prod)
Fin tant que
/*Fermeture du fichier*/

LES FICHIERS | Aliou Baldé


Fermer (fic)
………………………………………………………………………………………………………………………………………..
SUPPRESSION D’UN ELEMENT
Exercice :
Soit fic un fichier de produit chaque produit est caractérisé par un code, prix unitaire, libelle, quantité. Ecrire un
code qui permet de supprimer un produit à partir de son code.
/*ouverture du fichier en mode lecture*/
Ouvrir (fic) lecture/écriture
Lire (fic, prod)
Afficher (« veuillez saisir le code du produit à supprimer »)
Lire (codeR)
Tant que (ff (fic) ≠Vrai ET prod. codepro ≠ codeR) faire
/*Passer au produit suivant*/
Lire (fic, prod)
Fin tant que
/*on teste si on a trouvé*/
Si (prod. codepro = codeR) alors
/*on a trouvé le produit à supprimer*/
Supprimer (fic, prod)
Afficher (« le produit a bien été supprimer »)
Sinon
Afficher (« ce code n’existe pas »)
Fin sinon
Fermer (fic)
…………………………………………………………………………………………………………………………………….
SUPPRESSION DE PLUSIEURS ELEMENTS
Exercice :
Soit fic un fichier de produit chaque produit est caractérisé par un code, prix unitaire, libelle, quantité. Ecrire un
code qui permet de supprimer tous les produits qui ont un prix unitaire inférieur à 1000 Fr.
/*ouverture du fichier en mode lecture*/
Ouvrir (fic) lecture/écriture
Lire (fic, prod)
Tant que (ff (fic) ≠Vrai ET prod. codepro ≠ codeR) faire
Si (prod. pu <1000) alors
Supprimer (fic, prod)
Fin sinon
Fin tant que
Fermer (fic)
…………………………………………………………………………………………………………………………………………
TRADUCTION EN LANGAGE C
#include<stdio.h>
#include<stdlib.h>
Struct produits
{
Int codepro ;
Char libelle [20] ;
Int pu ;
Int qte ;
};
Typedef struct produits produit ;
Main ()
{
FILE * fic1 = NULL ;
FILE * fic2 = NULL ;

LES FICHIERS | Aliou Baldé


Int codeR ;
Produit prod ;
/*Création du fichier*/
/*Ouverture du fichier*/
Fic1=fopen (« fichier produit.txt », « w ») ;
Printf (« veuillez saisir le code du produit ou -1 pour arrêter la saisie \n ») ;
Scanf (« %d », &prod. codepro) ;
While (prod. codepro !=-1)
{
Printf (« veuillez saisir le libelle\n ») ;
Fflush (stdin) ;
Gets (prod. libelle) ;
Printf « veuillez saisir le prix unitaire\n) ;
Scanf (« %d », &prod. pu) ;
Printf (« veuillez saisir la quantité\n ») ;
Scanf (« %d », &prod. qte) ;
/*écriture du produit dans le fichier*/
Fprintf (fic1, « %d %s %d %d\n », &prod. codepro, &prod. libelle, &prod. pu, &prod. qte) ;
/*Passer au produit suivant*/
Printf (« saisir un autre code ou -1 pour arrêter la saisie:\n ») ;
Scanf (« %d », &prod. codepro) ;
};
/*Fermeture du fichier*/
Fclose (fic1);
/*Code de la suppression*/
Printf («veuillez saisir le code du produit à supprimer\n»);
Scanf («%d», &codeR);
/*Ouverture du fichier de produit en mode lecture*/
Fic1=fopen («fichier produit.txt», «r»);
/*Ouverture du fichier2 en mode lecture*/
Fic2=fopen («fichier2.txt», «w»);
If (prod. codepro ! =CodeR)
{
Fprintf (fic2, «%d %s %d %d\n», &prod. codepro, &prod. libelle, &prod. pu, &prod. qte);
}
}
/*Fermer le fichier1 */
Fclose (fic1);
/*Fermer le fichier2*/
Fclose (fic2);
/*Supprimer le fichier1*/
Remove («fichier produit.txt»);
/*Renommer le fichier2 en fichier produit.txt*/
Rename («fichier.txt», «fichier produit.txt»);
}
……………………………………………………………………………………………………………..

Exercice devoir en langage c : PROJET GESTION STOCK


MENU
1. Ajouter un produit
2. Lister les produits
3. Rechercher un produit
4. Vente
5. Achat
6. Modifier un produit
7. Supprimer un produit
8. Afficher les produits en rupture de stock

LES FICHIERS | Aliou Baldé


9. Compter les produits dont le prix unitaire est >10.000
10. Quitter
……………………………………………………………………………………………………………………………………..
La fusion des fichiers
Exercice :
On va écrire un programme qui permet de fusionner deux fichiers de produits, les deux fichiers ont le même type
d’enregistrement.
/*Code de la fusion*/
/*Ouvrir le fichier en lecture*/
Ouvrir (fic1) en lecture
/*Ouverture du fichier3 en écriture*/
Ouvrir (fic3) en écriture
Lire (fic1, prod)
Tant que (ff (fic1) ≠ Vrai) faire
Ecrire (fic3, prod)
Lire (fic1, prod)
Fin tant que
/*Fermer le fichier1*/
Fermer (fic1)
/*Ouvrir le fichier2 en lecture*/
Ouvrir (fic2) en lecture
Lire (fic2, prod)
Tant que (ff (fic2) ≠ vrai) faire
Ecrire (fic3, prod)
Lire (fic2, prod)
Fin tant que
/*Fermeture des fichiers 2 et 3*/
Fermer (fic2)
Fermer (fic3)
……………………………………………………………………………………………………………………….
Traduction en Langage C de la fusion des fichiers
/*Code de la fusion*/
Fic1 =fopen («fichier1.txt», «r»);
Fic2 =fopen («fichier2.txt», «r»);
If (fic1 ==NULL)
{
Printf («Problème d’ouverture du fichier1\n»);
}
Else
{ If (fic2 ==NULL)
{ Printf («d’ouverture du fichier2\n»);
}
Else
{
/*Ouverture du fichier3*/
Fic3 =fopen («fichier3.txt», «a») ;
While (fscanf (fic1, «%d %s %d %d», &prod. codepro, &prod. libelle, &prod. pu, &prod. qte) !=EOF)
{
/*écrire dans le fichier3*/
Fprintf (fic3, «%d %s %d %d\n », prod. codepro, prod. libelle, prod. pu, prod. qte);
}
/*Fermeture du fichier1*/
Fclose (fic1);
/*Copie du fichier2*/
While (fscanf (fic2, «%d %s %d %d», &prod. codepro, &prod. libelle, &prod. pu, &prod. qte) !=EOF)
{ /*écrire l’enregistrement dans le fichier3*/
Fprintf (fic3, «%d %s %d %d\n», prod. codepro, prod. libelle, prod. pu, prod. qte);

LES FICHIERS | Aliou Baldé


}
/*Fermeture du fichier2*/
Fclose (fic2);
/*Fermeture du fichier3*/
Fclose (fic3);
}
}
Exercice1: on va écrire un programme qui permet de créer un fichier de produit, chaque produit est caractérisé
par un code, libelle, prix unitaire et quantité.
1- Ecrire le code qui permet d’afficher les informations du fichier dans l’ordre croissant du prix unitaire.
2- Ecrire le code qui permet d’afficher les informations du fichier dans l’ordre alphabétique du libelle.

Exercice 2: on va écrire un programme qui permet d’éclater un fichier de produit en deux fichiers. L’un va contenir
les produits dont le prix est <100.000 et l’autre dont le prix est >50.000.
/*Ouverture du fichier*/
Fic =fopen («fichier.txt», «r»);
If (fic ==NULL)
{
Printf («Problème d’ouverture du fichier1\n»);
}
Else
{ Fic1 =fopen («fic1», «w»);
Fic2 =fopen (« ic2», «r»);
While (fscanf (fic2, «%d %s %d %d», &prod. codepro, &prod. libelle, &prod. pu, &prod. qte) !=EOF)
If (prod. pu >50000)
{
Fprintf (fic3, «%d %s %d %d\n», prod. codepro, prod. libelle, prod. pu, prod. qte);
}
Else
{
Fprintf (fic3, «%d %s %d %d\n», prod. codepro, prod. libelle, prod. pu, prod. qte);
}
}
/*Fermeture des fichiers*/
Fclose (fic1);
Fclose (fic2);
Fclose (fic3);

LES FICHIERS | Aliou Baldé

Vous aimerez peut-être aussi