[C] lecture de fichier
mélina
-
mélina -
mélina -
bonsoir,
J'ai un petit soucis je n'arrive pas à afficher le contenu d'un fichier voici le code si quelqu un peut m'aider ca serait gentil.
merci
J'ai un petit soucis je n'arrive pas à afficher le contenu d'un fichier voici le code si quelqu un peut m'aider ca serait gentil.
merci
/* fichier1.c */ #include <stdio.h> #include<string.h> int main (int argc, char **argv) { /* ouverture du fichier en mode texte */ FILE *fp = fopen ("toto1.c", "r"); /* L'ouverture du fichier est-elle realisee ? */ if (fp != NULL) { /* definition d'un tableau de char destine a recevoir la ligne * La taille est arbitraire. Elle doit etre cependant adaptee * aux besoins courants. * Pour les grandes tailles (disons > 256 char), * il est preferable d'utiliser une allocation dynamique. */ char ligne[32]; /* lecture de la premiere ligne */ while( fgets (ligne, 32, fp)); /* Affichage de la premiere ligne */ printf ("1: %s\n",ligne); /* lecture de la deuxieme ligne */ fgets (ligne, 3, fp); /* Affichage de la deuxieme ligne */ printf ("2: %s\n", ligne); /* Fermeture du fichier */ fclose (fp); } else { printf ("Erreur d'ouverture du fichier\n"); } return 0; }
A voir également:
- [C] lecture de fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
4 réponses
un erreur de ma part c'est 32 et non pas 3, mais ca ne resout trjs pas le prb
/* lecture de la deuxieme ligne */
fgets (ligne, 32, fp);
/* lecture de la deuxieme ligne */
fgets (ligne, 32, fp);
Je mettrais plutot ca :
/* fichier1.c */ #include <stdio.h> #include<string.h> int main (int argc, char **argv) { /* ouverture du fichier en mode texte */ FILE *fp = fopen ("toto1.c", "r"); /* L'ouverture du fichier est-elle realisee ? */ if (fp == NULL) { } /* definition d'un tableau de char destine a recevoir la ligne * La taille est arbitraire. Elle doit etre cependant adaptee * aux besoins courants. * Pour les grandes tailles (disons > 256 char), * il est preferable d'utiliser une allocation dynamique. */ char ligne[32]; /* lecture de la premiere ligne */ while( fgets (ligne, 32, fp)); /* Affichage de la premiere ligne */ printf ("1: %s\n",ligne); /* lecture de la deuxieme ligne */ fgets (ligne, 3, fp); /* Affichage de la deuxieme ligne */ printf ("2: %s\n", ligne); /* Fermeture du fichier */ fclose (fp); } else { printf ("Erreur d'ouverture du fichier\n"); } return 0; }
Je mettrais plutot ca : (le premier message est à supprimer, parti trop vite)
/* fichier1.c */ #include <stdio.h> #include<string.h> int main (int argc, char **argv) { FILE *fp = fopen ("toto1.c", "r"); // Test ouverture du fichier if (fp == NULL) { printf ("Erreur d'ouverture du fichier\n"); exit(1); } //Fichier ouvert char ligne[32]; int i = 1; while( fgets(ligne, sizeof(ligne), fp) != NULL ) { printf ("%d: %s\n",i,ligne); i++; } // Teste si fgets a rencontré une erreur if( !feof(fp) ) { printf("erreur rencontrée lors de la lecture"); exit(1); } //Teste Fermeture if(fclose(fp) != 0) { printf("Impossible de fermer le flux"); exit(1); } //Tout s'est bien passé return 0; }