IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Lire avec fscanf dans un fichier avec délimiteurs


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut Lire avec fscanf dans un fichier avec délimiteurs
    Bonsoir,

    Actuellement sur un projet, j'ai besoin de lire dans un fichier .txt une ligne écrite sous cette forme (en théorie plusieurs, mais si sa fonctionne pour une, ca fonctionnera pour plusieurs):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bolivar:48.880502:2.374922
    Je dois stocker la chaine Bolivar dans une variable char, 48.xxxx dans une variable float, 2.xxxx dans une autre variable float.

    Je me suis donc servi du scanf de cette façon pour lire les 3 données dont j'ai besoin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    void main()
    {  
            char nomStation[50];
            float latitude[20], longitude[20];
     
            FILE *fichier = NULL;
        fichier = fopen ("stations_metro.txt", "r");
     
            if(fichier != NULL)
            {
                    fscanf(fichier,"%[ˆ:]:%f:%f\n", nomStation, latitude, longitude);
     
                    printf("Nom: %s\n", nomStation);
                    printf("Lat: %f\n", *latitude);
                    printf("Longi: %f\n\n", *longitude);
             }
     
             fclose(fichier);
    }
    Le résultat n'est pas celui que je souhaite, il ne récupère pas le nom (il affiche en tout cas un symbole bizarre), la latitude vaut -0.00000 et la longitude varie, si je lance plusieurs fois le code, la valeur sera différente (des valeurs aléatoires j'ai l'impression)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nom:
    Lat: 0.000000
    Longi: -0.000000
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nom:
    Lat: 0.000000
    Longi: -31270482477056.000000
    Je souhaite en plus de cela récupère les séparateurs (: après le nom, : après latitude et \n après longitude) c'est pour cela que je l'ai ai ajouté dans le fscanf.

    Pour information, j'utilise Ubuntu 14.04 pour faire mon code avec l'editeur gedit et le terminal (sans dec' ^^)

    J'ai beaucoup cherché sur internet, j'ai trouvé pas mal de choses, j'ai tout essayé et j'ai erreur plus ou moins farfelue et même des Erreur de segmentation (ça c'est moins bien par contre ...)

    Pouvez vous m'aider sur la syntaxe de la fonction fscanf pour que cela fonctionne correctement ?

    PS: J'ai essayé une méthode autre aussi, à savoir récupèrer toute la ligne avec fgets et la découper apr-s avec strtok (en l'utilisant 3 fois pour avoir les 3 valeurs), cela fonctionne pour quelques lignes et dès que je complique un peu le code (avec des malloc et tout), j'ai des erreurs de segmentation à n'en plus finir.

    PS2: J'aimerais trouver une méthode simple. Sur une autre forum, on m'a suggérer de stocker tout le fichier dans un tableau a deux dimensions et de l'allouer dynamiquement, mais pour quelque chose qui est juste de récupèrer 3 valeurs, je trouve la méthode compliquée et peu fiable.


    En espérant des réponses rapides,

    Cordialement,
    Share45.

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    scanf demande des pointeurs, ce que je ne vois pas. Après observation consentieuce, c'est dû à ce que latitude et longitude sont des tableaux (donc converti en pointeurs du premier élément)

    les variables latitude et longitude n'ont pas de raison (dans cet extrait de code) d'être des tableaux.

    Attention, la fonction main n'est pas void, en C standard. Tu ne dois pas avoir activé de warning (ou ne pas en tenir compte).
    Aajoute les options -Wall -Wextra à ta commande de compilation

    Essaie comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int main() {  
            char nomStation[50];
            float latitude, longitude;
     
            FILE *fichier = NULL;
            fichier = fopen ("stations_metro.txt", "r");
     
            if (fichier != NULL) {
                    fscanf(fichier,"%[ˆ:]:%f:%f\n", nomStation, &latitude, &longitude);
                    printf("Nom: %s\nLat: %f\nLongi: %f\n\n", nomStation, latitude, longitude);
            }
     
            fclose(fichier);
    }

  3. #3
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Bonjour,

    Juste un petit complément au code de leternel: Il faut tester le retour du fscanf. La fonction te retourne le nombre de champs remplis. S'il est différent de 3 pour ton cas, tu ne sais pas ce que contient les variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            if (fichier != NULL) {
                    if(fscanf(fichier,"%[ˆ:]:%f:%f\n", nomStation, &latitude, &longitude)==3)
                            printf("Nom: %s\nLat: %f\nLongi: %f\n\n", nomStation, latitude, longitude);
                    else
                            printf("Erreur de format !\n") ;
            }
    Bonne continuation.

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    c'est vrai, j'ai oublié d'y penser. les scanf retourne le nombre de champ correctement lu.

  5. #5
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Merci de vos réponses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    void lectureStation(FILE* fichierStationsMetro, t_station* stationsMetro)
    {	
    	char tempNomStation[50];
    	char tempLatStation[12], tempLongStation[10];
     
            fscanf(fichierStationsMetro,"%[ˆ:]:%s:%s\n", tempNomStation, tempLatStation, tempLongStation);
     
           	printf("%s:%s:%s\n\n", tempNomStation, tempLatStation, tempLongStation);
     
            stationsMetro->nomStation = malloc((strlen(tempNomStation)) * sizeof(char));
    	if (stationsMetro->nomStation == NULL)
    	{
        		printf("Problème d'allocation dynamique (1) \n");
         		exit(EXIT_FAILURE);
    	}
    	else
    	{
    		stationsMetro->nomStation = tempNomStation;
    	}
     
    	stationsMetro->lattitudeStation = malloc((strlen(tempLatStation)) * sizeof(char));
    	if (stationsMetro->lattitudeStation == NULL)
    	{
        		printf("Problème d'allocation dynamique (2) \n");
         		exit(EXIT_FAILURE);
    	}
    	else
    	{
    		stationsMetro->lattitudeStation = tempLatStation;
    	}
     
    	stationsMetro->longitudeStation = malloc((strlen(tempLongStation)) * sizeof(char));
    	if (stationsMetro->longitudeStation == NULL)
    	{
        		printf("Problème d'allocation dynamique (3) \n");
         		exit(EXIT_FAILURE);
    	}
    	else
    	{
    		stationsMetro->longitudeStation = tempLongStation;
    	}
    }
    J'ai utilisé le code fscanf que vous m'avez fourni, et j'ai compléter ma fonction, je n'ai pas d'erreur de compilation.
    Seul problème, l'affichage du résultat n'est pas bon, j'ai des symboles indéfini qui s'affiche a la place du texte récupéré dans le fichier.

    D'ou peut venir l'erreur ? Elle vient du fscanf mais je ne voit pas pourquoi il ne récupère rien.

    Merci de votre aide.

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Que donne ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main() {
    	char tempNomStation[50];
    	char tempLatStation[12], tempLongStation[10];
     
            sscanf("<le contenu de la première ligne de ton fichier>\n","%[ˆ:]:%s:%s\n", tempNomStation, tempLatStation, tempLongStation);
     
           	printf("%s:%s:%s\n\n", tempNomStation, tempLatStation, tempLongStation);
            return 0;
    }
    Par ailleurs, pourquoi n'as-tu pas testé le code retour de scanf, comme suggéré par Elijha?

  7. #7
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Ton code me renvois la même chose (il n'affiche même pas le texte):
    EDIT: Le code avec le retour de scanf me renvoi erreur de lecture, si l'on considère le message du else comme tel. Il n'arrive donc pas à lire le contenu du fichier (a priori aucun vu le texte qu'il affiche)

  8. #8
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Justement, c'est la raison pour laquelle il faut l'écrire avant.
    La fonction a le bon goût de te proposer un moyen de vérifier certains cas d'erreur.
    Tu as une erreur, mais tu ne veux pas utiliser cette information. C'est dommage non?

    Il y a des tas de raisons pour laquelle un scanf peut échouer:
    • l'entrée a été redirigée sur n'importe quoi
    • le fichier n'est pas lisible
    • le fichier n'est pas un vrai fichier, et n'est pas encore lisible
    • le fichier est vide
    • le fichier n'est pas correctement formaté, car le créateur s'est trompé.
    • le fichier n'est pas correctement formaté, car il contient des caractères que tu ne vois pas (comme sub=0x1A)


    et probablement d'autre encore.

    Au passage, %s s'arrete au premier blanc (dont espace, tabulation, fin de ligne ou retour chariot, tabulation vertical (\v)).

  9. #9
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            stationsMetro->nomStation = malloc((strlen(tempNomStation)+1) * sizeof(char));
    	if (stationsMetro->nomStation == NULL)
    	{
        		printf("Problème d'allocation dynamique (1) \n");
         		exit(EXIT_FAILURE);
    	}
    	else
    	{
    		stationsMetro->nomStation = tempNomStation;    <<<<< Ce n'est pas comme cela qu'on fait de la copie de chaîne !!!
    	}
    1. La fonction strlen(...) retourne le nombre de caractères de la chaîne sans le \0 final. Par sécurité prévois +1 octet supplémentaire.
    2. Pour copier des chaînes de caractères, utilise la fonction strcpy(...) ou strncpy(...).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(stationsMetro->nomStation, tempNomStation) ;

  10. #10
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    @ELijha: Merci du rappel, j'avais modifer cela pour voir si ce n'était pas la fonction qui faisait que l'affichage ne marchait pas, je vais remettre strcpy car je sais que le problème ne vient pas de la.

    @leternel:
    Pourtant le fichier respecte toutes les conditions que tu as énnoncés.

    Un exemple de texte contenu dans le fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Bolivar:48.880502:2.374922
    Richelieu-Drouot:48.871987:2.338741
    Filles du Calvaire:48.864072:2.366121
    George V:48.872013:2.300569
    Charles Michels:48.846591:2.286942
    Vavin:48.842232:2.328949
    Saint-Fargeau:48.872083:2.404520
    Jules Joffrin:48.892437:2.344782
    Fort d'Aubervilliers:48.914240:2.403785
    Simplon:48.893381:2.348202
    Iéna:48.864466:2.293380
    Saint-Michel:48.853650:2.343929
    Porte d'Ivry:48.820960:2.370440
    Couronnes:48.869521:2.379861
    Église de Pantin:48.893628:2.412918
    Saint-Denis - Porte de Paris:48.930211:2.357769
    Ceci sur 299 lignes, donc aucun soucis de ce côté là, surtout que j'ai essayé en modifiant le code du fscanf comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fscanf(fichierStationsMetro,"%s:%s:%s\n", tempNomStation, tempLatStation, tempLongStation);
    printf("%s:%s:%s\n", tempNomStation, tempLatStation, tempLongStation);
    Il m'affiche quelque chose de ce type;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Bolivar:48.880502:2.374922:~
                                @:
    Donc il arrive a lire le fichier, le problème viendrait de la syntaxe du fscanf d'après ce que je peut voir non ?

  11. #11
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Le problème vient du format de fscanf. Essaye avec ce format "%[^:]:%[^:]:%[^\n]\n"

    - 1ier champ : Prendre tous les caractères jusqu'à rencontrer ':'
    - 2ième champ : Prendre tous les caractères jusqu'à rencontrer ':'
    - 3ième champ : Prendre tous les caractères jusqu'au retour chariot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if(fscanf(fd, "%[^:]:%[^:]:%[^\n]\n", Ville, latitude, longitude)==3)
                printf("%s    %s    %s\n", Ville, latitude, longitude) ;
            else
                fprintf(stderr, "Format error.\n") ;

  12. #12
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    J'ai essayé ton fichier avec ce petit programme et ça fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
        FILE *fd = NULL ;
     
        if((fd=fopen("villes.txt", "r"))==NULL) {
            fprintf(stderr, "%s\n", strerror(errno)) ;
            return EXIT_FAILURE ;
        }
     
        while(!feof(fd)) {
            char Ville[128] ;
            char latitude[50], longitude[50] ;
     
            if(fscanf(fd, "%[^:]:%[^:]:%[^\n]\n", Ville, latitude, longitude)==3)
                printf("%30s%15s%15s\n", Ville, latitude, longitude) ;
            else
                fprintf(stderr, "Format error.\n") ;
        }
     
        fclose(fd) ;
        return EXIT_SUCCESS ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
                             Paris      48.856579       2.347555
                           Bolivar      48.880502       2.374922
                           Taverny      49.027474       2.223365
                    Mouans Sartoux      43.620410       6.971512
                  Richelieu-Drouot      48.871987       2.338741
                Filles du Calvaire      48.864072       2.366121
                          George V      48.872013       2.300569
                   Charles Michels      48.846591       2.286942
                             Vavin      48.842232       2.328949
                     Saint-Fargeau      48.872083       2.404520
                     Jules Joffrin      48.892437       2.344782
              Fort d'Aubervilliers      48.914240       2.403785
                           Simplon      48.893381       2.348202
                              Iena      48.864466       2.293380
                      Saint-Michel      48.853650       2.343929
                      Porte d'Ivry      48.820960       2.370440
                         Couronnes      48.869521       2.379861
                  Eglise de Pantin      48.893628       2.412918
      Saint-Denis - Porte de Paris      48.930211       2.357769
    Bonne continuation

  13. #13
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Merci, effectivement, c'était ca qui posait problème. (la syntaxe du fprintf de ton avant dernier message)

    Après j'ai une question (qui n'est pas réellement un problème), j'ai une fonction qui compte le nombre de ligne de mon fichier (j'aurais pu l'ajouter dans le fichier, et le lire directement, mais cela ne permet pas d'ajouter une ligne rapidement car il demande une modification du code C), et si j'appel cette fonction avant d'appeler la fonction qui va lire le fichier (a savoir la fonction plus haut avec le fscanf), alors elle me renvoit une erreur.

    L'erreur est celle du else du fscanf (Format Error), alors que je ne fait que compter le nombre de ligne par cette fonction (lire caractère à caractères et compter le nombre de \n

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    int comptageStationsMetro(FILE* fichierStationsMetro)
    {
    	int caracteres = 0, nombreStations = 0;
     
    	while((caracteres = fgetc(fichierStationsMetro)) != EOF)
    	{
    		if(caracteres == '\n')
    		{
    			nombreStations++;
    		}
    	}
     
    	return nombreStations;
    }
    Si j'appel la fonction après avoir lu, cela fonctionne, mais le nombre de station est décrementé du nombre de station lues avant.
    SI par exemple j'affiche 50 stations, au lieu de compter 299 stations, il va en compter 249.

  14. #14
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Quand tu ouvres un fichier, le file descripteur (FILE *) contient un pointeur de lecture de ton fichier. Quelque soit la méthode de lecture (fread/fgets/fgetc/fscanf etc.) ce pointeur est incrémenté du nombre de caractères lus. Donc tu ne peux pas comptabiliser tes lignes et ensuite "RE"lire la ligne dans sa globalité. Je pense que tu veux stocker les villes dans un tableau et connaitre le nombre de lignes pour pouvoir l'allouer.

    Donc pour comptabiliser ton nombre de lignes (villes), plusieurs choix :
    Soit tu ouvres le fichier, puis tu comptes le nombre de lignes (utilise la fonction fgets(...) qui lit une ligne de fichier jusqu'à trouver "\n" ou '\0'). Ensuite tu fermes ton fichier pour le réouvrir et cette fois ci analyser le contenu.
    Ou bien tu comptabilises les lignes à la volée lors de l'analyse et tu stockes les villes dans une liste chaînée (http://nicolasj.developpez.com/articles/listesimple/).

    A toi de voir la meilleure structure à adopter pour ton algorithme

    ++

  15. #15
    Membre averti
    Homme Profil pro
    Etudiant ingénieur électronique et informatique industrielle
    Inscrit en
    Août 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant ingénieur électronique et informatique industrielle

    Informations forums :
    Inscription : Août 2015
    Messages : 28
    Par défaut
    Je pensais un peu barbare la méthode ouvrir puis fermer et recouvrir mais je vais adopter cette méthode plus simple pour ce que je veut faire.

    Merci à vous deux de votre aide.

    Bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire des ints dans un fichier texte avec java.io
    Par Vcouprie dans le forum Général Java
    Réponses: 1
    Dernier message: 07/02/2013, 20h01
  2. Réponses: 10
    Dernier message: 13/07/2012, 09h39
  3. [Débutant] lire dans un fichier avec linq
    Par theangel2011 dans le forum C#
    Réponses: 8
    Dernier message: 11/08/2011, 12h01
  4. comparaison 1 fichier avec 1 feuille à 1 fichier avec 2 feuilles
    Par sofiane06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/08/2008, 13h21
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo