IUT de Villetaneuse TP7 : fichier (Corrigé) Exercice 1 : Caractères ecrivez une
IUT de Villetaneuse TP7 : fichier (Corrigé) Exercice 1 : Caractères ecrivez une fonction c qui prend en argument le nom d’un fichier et affiche le nombre de caractères de ce fichier. Exercice 2 : Écriture d’un fichier texte ecrivez un programme qui affiche le contenu d’un fichier texte en faisant précéder chaque ligne par son numéro. Exercice 3 : lecture d’un fichier ecrivez un programme qui affiche le nombre de ligne contenue d’un fichier texte. Exercice 4 : caractère majuscules ecrivez un programme qui affiche le contenu d’un fichier texte, en passant tous les caractères en majuscules. Exercice 5 : Écriture d’un fichier texte ecrivez un programme qui crée un Fichier texte nommé "tableX.txt" qui contienne la table de multiplication pour le nombre X (le fchier "table7.txt" contiendra la table de 7), présentée sous la forme suivante : ! " 1 1 x 7 = 7 2 2 x 7 = 14 3 etc... 4 9 x 7 = 63 # $ Exercice 6 : Lectures et écritures de chaînes 1. Écrire un programme en C qui lit 10 chaînes de caractères tapées par l’utilisateur (d’une longueur maximale de 100 caractères) et qui les écrit dans un fichier dont le nom sera demandé à l’utilisateur. Correction : ! " 1 #include<stdio.h> 2 #define TAILLE 100 3 int main(void) 4 { 5 FILE* f; 6 char s[TAILLE]; 7 char nomFic[40]; 8 int i; 9 printf ("\nDonner le nom du fichier:"); 10 gets(nomFic); 11 f=fopen(nomFic,"wt"); 12 if (f == NULL) 13 printf ("Erreur"); 14 else 15 { 16 for (i=0;i<10;i++) 17 { Langage C % & ' ( 82 1ere année Département informatique 18 printf ("donnez votre texte d’une longueur maxi de 100 caractères\n"); 19 gets(s); // cf. remarque ci-dessous 20 fputs(s,f); // une écriture dans le fichier 21 fputs("\n",f); // écrit le retour à la ligne 22 } 23 fclose (f); // ajoute EOF au fichier et ferme le fichier 24 } 25 } # $ Remarque :la fonction gets est dangereuse car elle ne teste pas s’il y a plus de 100 caractères (voir man gets). En toute rigueur, il faut utiliser fgets(s, 100, stdin); 3 2. Ecrire une fonction en C lireChaine qui ouvre un fichier texte en lecture et qui affiche à l’écran tous les enregistrements (d’une longueur maximale de 100 caractères) lus dans le fichier. Le nom du fichier est en paramètre. Ecrire un programme principal qui appelle cette fonction avec le fichier créé dans la question précédente). Rappel : en fin de fichier, fgets] positionne un indicateur qu’on l’on teste avec la fonction feof. Correction : ! " 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void lireChaine(char nomFic[]) 5 { 6 FILE* f; 7 char s[100]; 8 f=fopen(nomFic,"rt"); 9 if (f==NULL) 10 printf ("Erreur"); 11 else 12 { 13 fgets (s,100,f); // il faut lire une première fois pour positionner EOF 14 while (!feof(f)) 15 { 16 printf ("%s",s); 17 fgets (s,100,f); 18 } 19 fclose (f); 20 } 21 } 22 23 int main() 24 { 25 lireChaine ("titi"); // titi c’est le nom du fichier de la question 1) 26 } # $ 3 Exercice 7 : Lectures et écritures formatées 1. Ecrire une fonction en C sauverEntText qui sauvegarde tous les nombres compris entre 100 et 110 (à raison d’un par ligne) dans un fichier texte dont le nom est passé en paramètre. Ecrire un programme principal qui appelle cette fonction. Correction : ! " 1 #include<stdio.h> 1ere année % & ' ( 83 Langage C IUT de Villetaneuse 2 #include<stdlib.h> 3 4 void sauverEntText(char nomFic[]) 5 { 6 FILE* f; 7 int i; 8 f = fopen(nomFic,"wt"); 9 if (f==NULL) 10 printf ("Erreur"); 11 else 12 for (i=100;i<111;i++) 13 fprintf (f, "%d\n", i); // attention fputs ne fonctionne pas car ce ne sont pas des chaines 14 fclose (f); 15 } 16 17 int main() 18 { 19 char nomFic[40]; 20 printf ("\n Donner le nom du fichier:"); 21 gets(nomFic); 22 sauverEntText(nomFic); 23 } # $ 3 2. Ecrire une fonction en C lireEnt qui lit et affiche à l’écran les enregistrements d’un fichier texte dont le nom est en paramètre. Ces enregistrements sont des entiers. Ecrire également un programme principal qui appelle cette fonction avec le fichier créé à la question 1). Rappel : en fin de fichier, fscanf renvoie EOF et positionne un indicateur qu’on l’on teste avec la fonction feof. Correction : ! " 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void lireEnt(char nomFic[]) 5 { 6 FILE* f; 7 int i; 8 f = fopen(nomFic,"rt"); 9 if (f==NULL) 10 printf ("Erreur"); 11 else 12 { 13 fscanf (f,"%d\n",&i); // une première lecture 14 while (!feof(f)) 15 { 16 printf ("%d \n", i); 17 fscanf (f,"%d\n",&i); 18 } 19 fclose (f); 20 } 21 } 22 23 int main() 24 { 25 lireEnt ("toto"); // toto c’est le nom de mon fichier en a) 26 } # $ Langage C % & ' ( 84 1ere année Département informatique Remarques : On peut utiliser un fgets suivi d’un atoi. En fin de fichier fscanf renvoie EOF, on a donc aussi la solution suivante. ! " 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void lireEnt(char nomFic[]) 5 { 6 FILE* f; 7 int i; 8 f = fopen(nomFic,"rt"); 9 if (f==NULL) 10 printf ("Erreur"); 11 else 12 { 13 while (fscanf(f,"%d\n",&i)!=EOF) 14 printf ("%d \n", i); 15 fclose (f); 16 } 17 } # $ 3 1ere année % & ' ( 85 Langage C uploads/Litterature/ corrige-td7c 1 .pdf
Documents similaires
-
17
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 10, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.2011MB