Académique Documents
Professionnel Documents
Culture Documents
TP Algorithmique
DEVOIR DE GROUPE : TD 7
Exercice 2
#include<stdio.h>
main()
{
FILE *fp=fopen("fichier.txt","r");
if(fp=NULL) {
intc=fgetc(fp);
while(c!=EOF) {
// On peut mettre aussi while(!feof(fp))
putchar(c);
c=fgetc(fp);
}
fclose(fp);
}
else printf("Imposssible d'ouvrir le fichier!\n");
}
Exercice 3
#include <stdio.h>
int main() {
// Ouvrir le fichier en mode lecture
FILE *fichier = fopen("fichier.txt", "r");
Exercice 4
#include<stdio.h>
main()
{
FILE * fp=fopen("fichier.txt","w");
int i;
char c;
int x;
for (i=1; i<=5; i++){
printf("Donner un caractere:");
c=getchar();
getchar();
x=fputc(c,fp);
if(x==EOF) printf("Echec de stockage du caractere %c dans
fichier.txt!\n",c);
else printf("stckage réussi du caractere %c dans fichier.txt!\n",c);
}
fclose(fp);
}
Exercice 5
#include<stdio.h>
int main()
{
FILE *fp=fopen("ficher.txt", "w");
int i;char ch[10]; int x;
for (i=1;i<=5;i++) {
printf("Donner une chaîne de caractères :");
gets(ch) ;
x=fputs(ch,fp) ;
if(x==EOF)
printf("Échec de stockage de la chaîne de caractères %s dans
fichier.txt !\n",ch);
else printf("stockage réussi de la chaîne de caractères %s dans
fichier.txt.\n",ch);
}
fclose(fp);
}
Exercice 6
#include <stdio.h>
int main()
{
FILE *fichier = fopen("fichier.txt", "w");
if (fichier != NULL) {
char c = getchar();
fputc(c, fichier);
fclose(fichier);
}
return 0;
}
Exercice 7
#include<stdio.h>
main()
{
FILE * fp=fopen("fichier.txt","w");
int i;
char ch[10];
int x;
printf("Donner une chaine de carectere à stocker dans fichier.txt:");
gets(ch);
for(i=0;i<strlen(ch);i++){
x=fputc(ch[i];fp);
if(x==EOF)
printf("Echec de stockage du caractere %c dans fichier.txt\n",ch[i]);
}
fclose(fp);
}
Exercice 8
#include<stdio.h>
void lire_fichier()
{
FILE*fp=fopen("ficher.txt","r");
if(fp!=NULL) {
char tmp[12];
char*ch=fgets(tmp,12,fp);
while(!feof(fp)) {
printf("%s",tmp);
ch=fgets(tmp,12,fp);
}
printf("%s",tmp);
fclose(fp);
}
else printf("Impossible d'ouvrir le fichier!\n");
}
void creer_fichier()
{
FILE*fp=fopen("fichier.txt","w");
int i;
char ch[10];
int x;
char c;
do{
printf("Dnnez une chaine de caractere:");
sc anf("%s",ch);
if(x==EOF)
printf("Echec de stockage de caracteres %s dans fichier.txt!\
n",ch);
else prntf("Stockage réussi de la chaine de caractere %s dans
fochier.txt\n",ch);
printf("voulez-vous ajouter uneautre chaine o/n ?");
getchar();
c=getchar();getchar();
} while(c!='n');
fclose(fp);
}
void Ajouter_fichier()
{
FILE*fp=fopen("ficher.txt","a");
int i;
char ch[10];
int x;
char c;
do{
printf("Donnez une chaine de caracteres:");
scanf("%s",ch);
x=fputs(ch,fp);
if(x==EOF)
printf("Echec de stckage de la chaine de caractere %s dans
fichier.txt!\n,ch");
else printf("Stockage de la chaine de caracteres s dnans un
fichier.txt\n",ch);
printf("voulez-vous ajouter une autre chaine o/n ?");
getchar();
c=getchar();
getchar();
} while(c!='n');
fclose(fp);
}
main()
{
int choix;
do{
printf("\nDonnez votre choix:\n\t1-Lirefichier,\t2-créer fichier,");
printf("\n\t3-Ajouter à u fichier et \n\t4-Quitter le programme\n");
scanf("%d",&choix);
switch(choix){
case1: Lire_fichier();break;
case2: Creer_fichier();break;
case3: Ajouter_fichier();break;
case4: break;
default: printf("choix incorrect!!");
}
} while(choix!=4);
}
Exercice 9
#include <stdio.h>
int main() {
// Déclarer une variable pour stocker le nombre réel
float nombreReel;
// Fermer le fichier
fclose(fichier);
return 0;
}
Exercice 10
#include <stdio.h>
int main()
{
FILE *fp = fopen("reel.txt", "r");
float f;
int x =fscanf(fp,"%f",&f);
if(x !=EOF)
printf("le nombre lu à partir du fichier est:%f\n",f);
else
printf("Echec de lecture à partir du fichier !\n");
fclose(fp);
return 0;
}
Exercice 11
#include <stdio.h>
#include <stdlib.h>
struct Employe {
int id;
char prenom[50];
char nom[50];
};
int main()
{
FILE *fichier;
struct Employe emp;
fichier = fopen("employes.txt", "w");
if (fichier == NULL)
{
perror("Erreur lors de l'ouverture du fichier");
exit(EXIT_FAILURE);
}
printf("Saisir les informations des employes :\n");
printf("Utilisez Ctrl+D (Unix/Linux) ou Ctrl+Z (Windows) pour terminer la
saisie.\n");
while (1)
{
printf("Numero de l'employe : ");
if (scanf("%d", &emp.id) != 1) break;
printf("Nom : ");
scanf("%s", emp.nom);
printf("Prenom : ");
scanf("%s", emp.prenom);
fprintf(fichier, "%d %s %s\n", emp.id, emp.nom, emp.prenom);
}
fclose(fichier);
fichier = fopen("employes.txt", "r");
if (fichier == NULL)
{
perror("Erreur lors de l'ouverture du fichier en mode lecture");
exit(EXIT_FAILURE);
}
printf("\nInformations des employes stockees dans le fichier :\n");
while (fscanf(fichier, "%d %s %s", &emp.id, emp.nom, emp.prenom) == 3)
{
printf("Numero: %d, Nom: %s, Prenom: %s\n", emp.id, emp.nom,
emp.prenom);
}
fclose(fichier);
return 0;
}
Exercice 12
#include<stdio.h>
main()
{
FILE*fp=fopen("bloc.txt","w");;
size_t nbe=fwrite("bonjour",7,1,fp);
if(nbe==1)
printf("Stockage avec succès\n");
else
printf("Echec de stockage dans le fichier bloc.txt !\n");
fclose(fp);
}
Exercice 13
#include<stdio.h>
main()
{
FILE*fp=fopen("bloc.txt","r");
char ch[8];
size_t nb1=fread(ch,7,1,fp);
if(nb1==1)
printf("La chaine lue est:%s\n",ch);
else
printf("Echec de lecture à partir du fichier bloc.txt !\n");
fclose(fp);
}
Exercice 14
#include<stdio.h>
int main() {
char nomFichier[50];
FILE *fichier;
// Demander à l'utilisateur de saisir le nom du fichier
printf("Entrez le nom du fichier (maximum 49 caractères) : ");
scanf("%s", nomFichier);
// Ouvrir le fichier en mode écriture
fichier = fopen(nomFichier, "wb");
// Vérifier si l'ouverture du fichier a réussi
if (fichier == NULL) {
printf("Erreur lors de l'ouverture du fichier.\n");
return 1; // Quitter le programme avec un code d'erreur
}
int nombre;
int bloc[10]; // Bloc de 10 entiers
// Demander à l'utilisateur de saisir les nombres entiers
printf("Entrez une suite de nombres entiers (0 pour terminer) :\n");
int i = 0;
while (1) {
scanf("%d", &nombre);
// Vérifier si l'utilisateur a entré 0 pour terminer la saisie
if (nombre == 0) {
break;
}
// Ajouter le nombre au bloc
bloc[i] = nombre;
i++;
// Si le bloc est plein, écrire le bloc dans le fichier
if (i == 10) {
fwrite(bloc, sizeof(int), 10, fichier);
i = 0; // Réinitialiser l'indice du bloc
}
}
// Si des nombres restent dans le dernier bloc, les écrire dans le fichier
if (i > 0) {
fwrite(bloc, sizeof(int), i, fichier);
}
// Fermer le fichier
fclose(fichier);
printf("Données enregistrées avec succès dans le fichier %s.\n",
nomFichier);
return 0;
}
Exercice 15
#include <stdio.h>
int main() {
char nomFichier[50];
printf("Entrez le nom du fichier : ");
scanf("%s", nomFichier);
FILE *fichier;
fichier = fopen(nomFichier, "rb");
if (fichier == NULL) {
fprintf(stderr, "Erreur lors de l'ouverture du fichier.\n");
return 1;
}
int blocSize = 4;
int buffer[blocSize];
while (fread(buffer, sizeof(int), blocSize, fichier) == blocSize) {
printf("Bloc lu : ");
for (int i = 0; i < blocSize; ++i) {
printf("%d ", buffer[i]);
}
printf("\n");
}
fclose(fichier);
return 0;
}
Exercice 16
#include<stdio.h>
typedef struct employe {
int num;
char nom[10],prenom[10];
}Employe;
main()
{
Employe e;char c;size_t nbe, nbl;FILE * fp;
//stockage (écriture) des employés
fp=fopen("employes.blc ", "w");
do{
printf("Donnez le numéro de l' employé :");
scanf("%d",&e.num);
printf("Donnez le prénom de l' employé :");
scanf("%s", e.prenom);
nbe=fwrite(&e,sizeof(e),1,fp);
if(nbe==1) printf("stockage avec succès.\n");
else printf("Échec de stockage dans employes.blc !\n");
printf("voulez-vous ajouter un autre employé o\n ?");
getchar();
c=getchar(); getchar();
} while(c !='n');
fclose(fp);
//Affichage (lecture) des employés
fp= fopen("employes.blc" ,"r");
puts("voici la liste des employés stockés dans le fichier :");
nbl=fread(&e,sizeof(e),1,fp);
if(nbl==1) printf("\t%d %s %s\n",e.num,e.nom,e.prenom );
while(!feof(fp) && nbl){
nbl=fread(&e,sizeof(e),1,fp);
if(nbl==1) printf("\t%d %s %s\n",e.num,e.nom,e.prenom );
}
fclose(fp);
}
Exercice 17
#include<stdio.h>
typedef enum feu{vert, orange, rouge} Feu;
int num;
main()
{
puts("Entrez un numéro de feu entre 0 et 2:");
scanf("%d",&num);
switch(num)
{
case vert:puts("Feu vert");
break;
case orange: puts("Feu orange");
break;
case rouge: puts("Feu rouge");
break;
default: puts("Choix incorrect");
}
}
Exercice 18
#include<stdio.h>
typedef struct employe{
int num;
char nom[10],prenom[10];
}Employe;
Employe T[5];
main(){
FILE *fp; int i;
fp=fopen("employes.blc","w");
for (i=0;i<5;i++){
printf("Donnez le numéro de l'employé %d:",i);
scanf("%d",&T[i].num);
printf("Donnez le nom de l'employé %d:",i);
scanf("%d",&T[i].nom);
printf("Donnez le prenom de l'employé %d:",i);
scanf("%d",&T[i].prenom);
}
//stockage(écriture) du tableau des employés dans un ficher binaire
fwrite(T,sizeof(Employe),5,fp);
fclose(fp);
//Affichage (lecture) du ficher des employés
fp=fopen("employes.blc","r");
fread(T,sizeof(Employe),5,fp);
for(i=0; i<5; i++){
printf("voici les informations de l'employer %d:\n",i);
printf("\tNum:%d,Nom:%s,prénom:%s\n",T[i].num,T[i].nom,T[i].prenom);
}
fclose(fp);
Exercice 19
#include <stdio.h>
#include <string.h>
struct Employe {
char nom[100];
// Autres champs...
};
int main() {
char nomRecherche[100];
struct Employe employe;
FILE *fichier = fopen("fichier.bin", "rb");
if (fichier != NULL) {
printf("Entrez le nom de l'employé à rechercher : ");
fgets(nomRecherche, 100, stdin);
while (fread(&employe, sizeof(struct Employe), 1, fichier)) {
if (strcmp(employe.nom, nomRecherche) == 0) {
// Afficher les informations de l'employé...
break;
}
}
fclose(fichier);
}
return 0;
}
Exercice 20
#include <stdio.h>
int main() {
char nomFichier[50];
FILE *fichier;
// Demander à l'utilisateur de saisir le nom du fichier
printf("Entrez le nom du fichier (maximum 49 caractères) : ");
scanf("%s", nomFichier);
// Vérifier si l'ouverture du fichier a réussi
if (fichier == NULL) {
printf("Erreur lors de l'ouverture du fichier.\n");
return 1; // Quitter le programme avec un code d'erreur
}
int position;
int nombreLu;
// Demander à l'utilisateur de saisir la position du nombre à lire
printf("Entrez la position du nombre à lire (en partant de 0) : ");
scanf("%d", &position);
// Se positionner dans le fichier à la position spécifiée
fseek(fichier, position * sizeof(int), SEEK_SET);
// Lire l'entier à partir de la position spécifiée
if (fread(&nombreLu, sizeof(int), 1, fichier) == 1) {
printf("Nombre lu à la position %d : %d\n", position, nombreLu);
} else {
printf("Erreur lors de la lecture du nombre à la position spécifiée.\
n");
}
// Fermer le fichier
fclose(fichier);
return 0;
}