TD 7
TD 7
TD 7
Série de TD N° 7
Exercice 1 :
Calculer et afficher le nombre de caractères d'un fichier ASCII (Utiliser n'importe quel fichier du
répertoire).
Exercice 2 :
Créer et relire un fichier binaire de 10 entiers.
Exercice 3 :
Écrire un programme C qui affiche le contenu d’un fichier texte en faisant précéder chaque ligne par son
numéro.
Exercice 4 :
Écrire un programme C qui affiche le contenu d’un fichier texte, en remplaçant toutes les voyelles
minuscules en majuscules.
Exercice 5 :
Écrire un programme qui crée un fichier texte nommé “tableX.txt” qui contienne la table de multiplication
pour le nombre X (le fichier “table7.txt” contiendra la table de 7), présentée sous la forme suivante :
1 x 7 = 7
2 x 7 = 14
etc...
9 x 7 = 63
Exercice 6 :
Ecrire un programme qui lit le contenu du fichier texte entree.txt, et le recopie caractère par caractère
dans le fichier sortie.txt.
Par exemple, le programme suivant écrit un tableau d'entiers (contenant les 50 premiers entiers) avec
fwrite
dans le fichier sortie, puis lit ce fichier avec fread et imprime les éléments du tableau.
Université de BATNA 2
Faculté : Mathématiques et Informatique
Département : Socle Commun en Mathématiques et Informatique
Année d'étude : 1ère Année Licence (L1) MI Année Universitaire : 2019/2020
Solutions TD N° 7
Exercice 1 :
#include <stdio.h>
#include <stdlib.h> /* pour utiliser la fonction exit */
main()
{
FILE *fp;
char c;
int i=0;
/* ouverture du fichier : */
fp = fopen("monfichier.txt", "rt");
if (fp ==NULL) /* gestion d’erreur */
{
puts("Erreur d’ouverture de fichier :");
puts("Fichier inexistant ou permissions insuffisantes");
exit(1); /* termine le programme avec code d’erreur */
}
while (c=fgetc(fp) != EOF)
{
i++;
}
fclose(fp); /* fermeture du fichier */
printf("%d", i); /* on retourne le nombre d’elements lus */
}
Exercice 2 :
#include <stdio.h>
#include <stdlib.h> /* pour utiliser la fonction exit */
#define n 10
main()
{
FILE *fp;
int i , T[n],A[n];
for(i=0; i<n; i++)
scanf("%d",&T[i]);
/* ouverture du fichier : */
fp = fopen("ficbin.txt", "wb+");
if (fp ==NULL) /* gestion d’erreur */
{
puts("Erreur d’ouverture de fichier :");
puts("Fichier inexistant ou permissions insuffisantes");
exit(1); /* termine le programme avec code d’erreur */
}
i=0;
while (i<n)
{
fprintf(fp,"%d",T[i]);
fprintf(fp,"%c",' ');
i++;
}
i=0;
fseek(fp,0L,0); /* déplacer le pointeur au début du fichier */
while(i<n)
{
fscanf(fp,"%d",&A[i]);
printf("%d\t",A[i]);
i++;
}
fclose(fp); /* fermeture du fichier */
}
Université de BATNA 2
Faculté : Mathématiques et Informatique
Département : Socle Commun en Mathématiques et Informatique
Année d'étude : 1ère Année Licence (L1) MI Année Universitaire : 2019/2020
Exercice 3 :
#include <stdio.h>
#include <stdlib.h> /* pour utiliser la fonction exit */
#define fiche "monfichier.txt"
main()
{
FILE *fp;
char c;
int i=1;
/* ouverture du fichier : */
fp = fopen(fiche, "r");
if (fp ==NULL) /* gestion d’erreur */
{
puts("Erreur d’ouverture de fichier :");
puts("Fichier inexistant ou permissions insuffisantes");
exit(1); /* termine le programme avec code d’erreur */
}
printf("%d\n",i);
while (fscanf(fp,"%c",&c)!=EOF /* ou -1*/)
{ if(c=='\n')
{
printf("\n");i++;
printf("%d",i);
}
putchar(c);
}
fclose(fp); /* fermeture du fichier */
}
Exercice 4 :
#include <stdio.h>
#include <stdlib.h> /* pour utiliser la fonction exit */
#define fiche "monfichier.txt"
main()
{
FILE *fp;
char c;
int i=1;
/* ouverture du fichier : */
fp = fopen(fiche, "r");
if (fp ==NULL) /* gestion d’erreur */
{
puts("Erreur d’ouverture de fichier :");
puts("Fichier inexistant ou permissions insuffisantes");
exit(1); /* termine le programme avec code d’erreur */
}
printf("%d\n",i);
while (fscanf(fp,"%c",&c)!=EOF /* ou -1*/)
{ switch (c)
{
case 'a' : c='A'; break;
case 'o' : c='O'; break;
case 'i' : c='I'; break;
case 'e' : c='E'; break;
case 'u' : c='U'; break;
case 'y' : c='Y'; break;
}
putchar(c);
}
fclose(fp); /* fermeture du fichier */
}
Université de BATNA 2
Faculté : Mathématiques et Informatique
Département : Socle Commun en Mathématiques et Informatique
Année d'étude : 1ère Année Licence (L1) MI Année Universitaire : 2019/2020
Exercice 5 :
#include <stdio.h>
#include <stdlib.h> /* pour utiliser la fonction exit */
#define n 10
main()
{
FILE *fp;
int i , x,s;
char A[n],c;
/* ouverture du fichier : */
fp = fopen("tableX.txt", "w+");
if (fp ==NULL) /* gestion d’erreur */
{
puts("Erreur d’ouverture de fichier :");
puts("Fichier inexistant ou permissions insuffisantes");
exit(1); /* termine le programme avec code d’erreur */
}
printf(" Entrer un entier : \t");
scanf("%d",&x);
i=1;
while (i<=10)
{ s=i*x;
fprintf(fp,"%d\t*\t%d\t=\t%d\n",i,x,s);
i++;
}
Exercice 6 :
#include <stdio.h>
#include <stdlib.h>
#define ENTREE "entree.txt"
#define SORTIE "sortie.txt"
int main(void)
{
FILE *f_in, *f_out;
int c;
if ((f_in = fopen(ENTREE,"r")) == NULL)
{
fprintf(stderr, "\nErreur: Impossible de lire le fichier %s\n", ENTREE);
return(EXIT_FAILURE);
}
if ((f_out = fopen(SORTIE,"w")) == NULL)
{
fprintf(stderr, "\nErreur: Impossible d'ecrire dans le fichier %s\n", SORTIE);
return(EXIT_FAILURE);
}
while ((c = fgetc(f_in)) != EOF)
fputc(c, f_out);
fclose(f_in);
fclose(f_out);
return(EXIT_SUCCESS);
}
Université de BATNA 2
Faculté : Mathématiques et Informatique
Département : Socle Commun en Mathématiques et Informatique
Année d'étude : 1ère Année Licence (L1) MI Année Universitaire : 2019/2020