Lire des fichiers en C....
Fermé
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
-
8 avril 2010 à 17:27
duchnoki Messages postés 158 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 30 novembre 2010 - 12 avril 2010 à 18:30
duchnoki Messages postés 158 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 30 novembre 2010 - 12 avril 2010 à 18:30
A voir également:
- Lire des fichiers en C....
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Lire fichier bin - Guide
- Renommer des fichiers en masse - Guide
- Lire fichier iso - Guide
5 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
9 avril 2010 à 21:44
9 avril 2010 à 21:44
Voici le code :
Et la dernière ligne marche ;-))).
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; fp=fopen("./coucou.txt","r"); if(fp==NULL) { fputs("erreur à l'ouverture du fichier\n",stderr); return EXIT_FAILURE; } else { int c; while((c=fgetc(fp))!=EOF) putchar(c==';'?'|':c); fclose(fp); return 0; } }
Et la dernière ligne marche ;-))).
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
8 avril 2010 à 19:12
8 avril 2010 à 19:12
C'est bon merci :
FILE *fle; int n = 0; char ligne[256]; char total[256]; fle = fopen("./flights.lst", "r"); if(fle == NULL) { printf("E : Can't open \"flights.lst\"\n"); return 1; } printf("I : Reading \"flights.lst\"\n"); while(fgets(ligne, 256, fle) != NULL) { printf("I : Readed : %s\n", ligne); int z=0; while(ligne[z] != NULL) { total[z] = ligne[z]; z++; } ligne[z] = "\n"; n++; } printf("I : %d lines sucessfull readed !\n", n); fclose(fle); char *colonne[8]; colonne[0] = strtok(total, ";"); colonne[1] = strtok(NULL, ";"); printf("I : %s\n", colonne[0]); printf("I : %s\n", colonne[1]);
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
8 avril 2010 à 22:54
8 avril 2010 à 22:54
Ton code est incorrect.
while(ligne[z] != NULL)
ligne[z] n'est pas un tableau mais un char. Autrement dit ligne est un tableau de char. Tu compares donc un char avec NULL... D'autant plus tu parcours caractère par caractère après avoir lu la chaine entièrement avec fgets.
ligne[z] = "\n";
"\n" est une chaîne de caractère et non un caractère simple. Il y a donc incompatibilité.
D'autant plus que si ton fichier contient plus de 255 caractères, ton algorithme ne fonctionnera pas.
Ce que tu peux faire tout simplement, c'est de lire caractère par caractère ton fichier. Ainsi pas besoin de gérer l'allocation dynamique, pas besoin d'utiliser de la mémoire pour rien, pas besoin d'utiliser strtok, etc.
Si tu veux un exemple, n'hésite pas ;-))).
Cdlt,
while(ligne[z] != NULL)
ligne[z] n'est pas un tableau mais un char. Autrement dit ligne est un tableau de char. Tu compares donc un char avec NULL... D'autant plus tu parcours caractère par caractère après avoir lu la chaine entièrement avec fgets.
ligne[z] = "\n";
"\n" est une chaîne de caractère et non un caractère simple. Il y a donc incompatibilité.
D'autant plus que si ton fichier contient plus de 255 caractères, ton algorithme ne fonctionnera pas.
Ce que tu peux faire tout simplement, c'est de lire caractère par caractère ton fichier. Ainsi pas besoin de gérer l'allocation dynamique, pas besoin d'utiliser de la mémoire pour rien, pas besoin d'utiliser strtok, etc.
Si tu veux un exemple, n'hésite pas ;-))).
Cdlt,
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
Modifié par duchnoki le 9/04/2010 à 20:56
Modifié par duchnoki le 9/04/2010 à 20:56
Voici ma dernière version :
et ça marche niquel ! Juste qu'il affiche pas bien la dernière ligne alors je la laisse tomber !
Mais je suis quand même preneur pour l'exemple ;) merci !
FILE *fle; int n = 0; char ligne[256]; char total[256]; fle = fopen("./starts.lst", "r"); if(fle == NULL) { printf("E : Can't open \"starts.lst\"\n"); return 1; } printf("I : Reading \"starts.lst\"\n"); int x = 0; while(fgets(ligne, 256, fle) != NULL) { printf("I : Readed : %s\n", ligne); int z=0; while(ligne[z] != NULL) { total[x] = ligne[z]; x++; z++; } n++; } printf("I : %d lines sucessfull readed !\n", n); fclose(fle); char *lignes[n-1]; int o = 1; lignes[0] = strtok(total, "\n"); while(o != n) { lignes[o] = strtok(NULL, "\n"); o++; } char *colonne[n-1]; char *colonne2[n-1]; char *colonne3[n-1]; char *colonne4[n-1]; char *colonne5[n-1]; char *colonne6[n-1]; char *colonne7[n-1]; char *colonne8[n-1]; int d = 0; while(d < n-1) { colonne[d] = strtok(lignes[d], ";"); colonne2[d] = strtok(NULL, ";"); colonne3[d] = strtok(NULL, ";"); colonne4[d] = strtok(NULL, ";"); colonne5[d] = strtok(NULL, ";"); colonne6[d] = strtok(NULL, ";"); colonne7[d] = strtok(NULL, ";"); colonne8[d] = strtok(NULL, ";"); d++; }
et ça marche niquel ! Juste qu'il affiche pas bien la dernière ligne alors je la laisse tomber !
Mais je suis quand même preneur pour l'exemple ;) merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
12 avril 2010 à 18:30
12 avril 2010 à 18:30
Merci !