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 :

Trouver une ligne dans un fichier d'adresses


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Trouver une ligne dans un fichier d'adresses
    bonjour à tous

    dans le cadre d'un projet informatique je dois créer un programme en langage C.

    Je dispose d'un fichier rassemblant des centaines d'adresses de cartes de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ./BD-ORTHO-1998/67/67-1998-108/1998-0972-2454-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0973-2449-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0973-2450-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0973-2451-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0974-2449-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0974-2450-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0974-2451-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0975-2455-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0976-2449-67.txt
    ./BD-ORTHO-1998/67/67-1998-108/1998-0976-2450-67.txt
    ou 108 est le numéro de la carte et 0972-2454 (par exemple) les coordonnées d'un point de la carte.

    Le but de mon programme est que l'utilisateur rentre les coordonnées du point qu'il cherche et que le programme lui renvoie le numéro de carte correspondant à ce point. Je cherche donc quels sont les outils qui me permettront de retrouver la ligne correspondant aux coordonnées rentrées par l'utilisateur parmi les centaines d'adresses du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./BD-ORTHO-1998/67/67-1998-108/1998-0976-2449-67.txt
    contenues dans mon fichier


    quelle commande de manipulation de fichiers me permettrait de lire ces différentes informations?
    une commande type "fgetc" me permet de lire un caractere dans un fichier et me renvoie le nombre de fois que ce caractere apparait. Je chercherais plutot une commande qui me donnerais la ligne où se trouve l'information que l'utisateur aurait rentré (par exemple: 0976-2449)

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Tu peux lire ligne par ligne ton fichier avec fgets puis a chaque ligne lue tu regardes si la chaine recherchée s'y trouve avec strstr
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    mais comment utiliser cette fonction?

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par geok120
    mais comment utiliser cette fonction?
    Tu as lu sa doc ?

    http://man.developpez.com/

    Tu as fait quelques essais dans un 'snippet' ? Comme dit élégamment un des moniteurs de voiles de ma fille "il faut se tirer les doigts du cul"... Ben oui, ça ne va pas venir tout seul. On donne des pistes, à toi de les explorer...
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par geok120
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./BD-ORTHO-1998/67/67-1998-108/1998-0976-2449-67.txt
    )
    IGN
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    oui ce sont les adresses des cartes de la BD Ortho de l'Alsace

    pour Emmanuel: Merci pour le lien et le conseil mais la vulgarité était-elle nécessaire?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    voilà j'ai maintenant écrit un petit programme qui recherche une sous chaîne à l'intérieur d'une ligne d'un fichier

    je crée une fonction "detection" qui lit mon fichier ligne à ligne avec fgets et qui à chaque ligne compare le pointeur renvoyé par fgets à la sous chaine à reconnaitre. Je renvoie alors "ligne" quand la sous-chaîne a été trouvée (car j'ai besoin de la ligne complète plus tard).

    dans le main, j'utilise la fonction "detection" pour afficher "ligne".

    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
     
    /* fonction detection qui renvoie la ligne ou l'on a trouve la chaine a identifier */
     
    char (*detection) ( char *chaineareconnaitre, FILE *fichierlu)
    	          { char *A;
                      char* ligne;
     
     while(fgets(ligne, 256, fichierlu))
    	                 { A=strstr(ligne,chaineareconnaitre);
    	                   if(A==NULL)
    	                    return 0;
    	                   else return ligne;
    			 }
     
     
    /* dans le main */
    main()
    {FILE *fichierutilise=fopen("reduction.c", "r");
    char *ligne;
    char *coorddupt="quelquechose"; /*en réalité dans le programme total on connait coorddupt  
     
     
    ligne=detection(coorddupt, fichierutilise);
    printf("%s\n", ligne); 
     
     
    }
    A la complilation tout se passe bien.
    Lorsque la sous-chaîne à identifier se trouve sur la première ligne du fichier, mon programme me revoie cette ligne complète: c'est ce que je veux.

    Par contre dès que la sous-chaîne à identifier se trouver sur une autre ligne que la 1ère, mon programme me revoie une "segmentation fault"!
    Ma fonction "detection" ne lit-elle que la première ligne?, normalement non.
    Y a-t-il une autre erreur? je n'ai pas trouvé où

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Primo tu n'alloues pas d'espace mémoire et tu fait un fgets vers quelque chose qui n'est pas alloué. Il te faut faire un malloc de ligne..

    Secondo tu ne boucles pas sur la lecture de ton fichier.. Tu fais un return quel que soit le résultat à la première ligne lue.

    Tertio tes pointeurs ne sont initilialisés.



    Si déjà tu corriges ça, cela devrait aller beaucoup mieux
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par geok120
    A la complilation tout se passe bien.
    Déjà, le code n'est pas complet, difficile de dire si la 'compilation se passe bien'...
    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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:4: error: syntax error before "FILE"
    main.c:5: error: syntax error before '{' token
    main.c:8: error: syntax error before "while"
    main.c:18: warning: return type defaults to `int'
    main.c:18: warning: function declaration isn't a prototype
    main.c: In function `main':
    main.c:18: error: `FILE' undeclared (first use in this function)
    main.c:18: error: (Each undeclared identifier is reported only once
    main.c:18: error: for each function it appears in.)
    main.c:18: error: `fichierutilise' undeclared (first use in this function)
    main.c:18: warning: implicit declaration of function `fopen'
    main.c:20: warning: initialization discards qualifiers from pointer target type
    main.c:20:33: unterminated comment
    main.c:20: error: syntax error at end of input
    main.c:19: warning: unused variable `ligne'
    main.c:20: warning: unused variable `coorddupt'
    Process terminated with status 1 (0 minutes, 2 seconds)
    9 errors, 6 warnings
    En ajoutant <stdio.h>, c'est légèrement mieux, mais ça reste catastrophique :
    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
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:6: error: syntax error before '{' token
    main.c:9: error: syntax error before "while"
    main.c:19: warning: return type defaults to `int'
    main.c:19: warning: function declaration isn't a prototype
    main.c: In function `main':
    main.c:21: warning: initialization discards qualifiers from pointer target type
    main.c:21:33: unterminated comment
    main.c:21: error: syntax error at end of input
    main.c:19: warning: unused variable `fichierutilise'
    main.c:20: warning: unused variable `ligne'
    main.c:21: warning: unused variable `coorddupt'
    Process terminated with status 1 (0 minutes, 0 seconds)
    4 errors, 6 warnings
    Sans parler de la présentation déplorable...
    Une fois réindenté, ça donne :
    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
     
    #include <stdio.h>
     
    /* fonction detection qui renvoie la ligne ou l'on a trouve la chaine a identifier */
     
    char (*detection) (char *chaineareconnaitre, FILE * fichierlu)
    {
       char *A;
       char *ligne;
     
       while (fgets (ligne, 256, fichierlu))
       {
          A = strstr (ligne, chaineareconnaitre);
          if (A == NULL)
             return 0;
          else
             return ligne;
       }
     
    /* dans le main */
       main ()
       {
          FILE *fichierutilise = fopen ("reduction.c", "r");
          char *ligne;
          char *coorddupt = "quelquechose";
          /*en réalité dans le programme total on connait coorddupt
     
             ligne=detection(coorddupt, fichierutilise);
             printf("%s\n", ligne);
     
             }
    Et la, on voit bien que
    • char (*detection) (char *chaineareconnaitre, FILE * fichierlu) n'a aucun sens. C'est sans doute :
      char *detection (char *chaineareconnaitre, FILE * fichierlu)
    • Cette fonction n'est pas terminée (manque un '}')
    • Que l'on pourrait très bien quitter cette fonction sans rien retourner
    • Qu'il manque <string.h> pour strstr().
    • Le commentaire n'est pas terminé (manque un '*/')
    • Qu'il manque un 'int' explicite au main() (obligatoire en C99) et un 'void' pour signifier qu'il n'y a pas de paramètres.
    • Qu'il manque un retour explicite (obligatoire en C90)

    Une fois ces corrections minimales effectuées,
    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
     
    #include <stdio.h>
    #include <string.h>
     
    /* fonction detection qui renvoie la ligne ou l'on a trouve la chaine a identifier */
    char *detection (char *chaineareconnaitre, FILE * fichierlu)
    {
       char *A;
       char *ligne;
     
       while (fgets (ligne, 256, fichierlu))
       {
          A = strstr (ligne, chaineareconnaitre);
          if (A == NULL)
             return 0;
          else
             return ligne;
       }
    }
     
    /* dans le main */
    int main (void)
    {
       FILE *fichierutilise = fopen ("reduction.c", "r");
       char *ligne;
       char *coorddupt = "quelquechose";
       /*en réalité dans le programme total on connait coorddupt */
     
       ligne = detection (coorddupt, fichierutilise);
       printf ("%s\n", ligne);
       return 0;
    }
    on voit bien que la variable 'ligne' n'est pas initialisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Compiling: main.c
    main.c: In function `detection':
    main.c:18: warning: control reaches end of non-void function
    main.c:8: warning: 'ligne' might be used uninitialized in this function
    Il est préférable de travailler avec un compilateur bien réglé...

    http://emmanuel-delahaye.developpez....tm#cfg_compilo

    Pour le reste, tout a été dit...
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup

    ça marche à présent

    Pour ma défense, je dirais juste que j'avais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    dans mon programme quand je l'ai testé et que j'avais oublié de le mettre dans mon code
    Pour le reste, merci de votre aide

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Pense à mettre si ça l'est
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  12. #12
    Membre averti
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Points : 387
    Points
    387
    Par défaut
    Hello,

    Citation Envoyé par geok120
    merci beaucoup

    ça marche à présent

    Pour ma défense, je dirais juste que j'avais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    dans mon programme quand je l'ai testé et que j'avais oublié de le mettre dans mon code
    Pour le reste, merci de votre aide
    Si ton format de ligne est invariant dans ton fichier texte, tu peux utiliser aussi une solution à base de fgets() + sscanf(). Voici un prog exemple (à parfaire et rendre plus propre), avec en sus une solution plus hardcore utilisant str(r)chr(). L'inconvénient du sscanf() est qu'il est plus cryptique, qu'il faut faire attention au '\n' qui reste dans le tampon de fgets() (et encore, surprise, il peut ne pas être présent si ce qui est lu dépasse la capacité du tampon, à parfaire dans l'exemple donné). Son avantage est qu'en cas de changements importants du format de ligne, ce sera plus facilement maintenable qu'avec la solution hardcore présentée.

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <limits.h>
    #include <errno.h>
     
    int getInt(char * const buff, const size_t N) {
     
      int rc = -1;
     
      if (fgets(buff, N, stdin)) {
         long res = 0L;   
         char * endp = NULL;
         size_t lg = strlen(buff);
     
         buff[lg-1] = '\0';
     
         res = strtol(buff, &endp, 10);
         if (endp && *endp != '\0') {
            fprintf(stderr, "Invalid number %s\n", endp);
         }
         else if (errno == ERANGE) {
            fprintf(stderr, "Number isn't in the correct range\n");
         }
         else if (res > INT_MAX || res < INT_MIN) {
            fprintf(stderr, "Number isn't in the correct range (INT_MIN < x < INT_MAX)\n");
         }
         else {
            rc = res;
         }
      }
      return rc;
    }
     
    void badLine(unsigned int num) {
      fprintf(stderr, "%u\t: bad line !!\n", num);
    }
     
    int main(void)
    {
     
       FILE * f = NULL;
       char buffStdin[10+1] = {0};
       char buffLine[100+1] = { '\0' };
       int x, y, found = 0;
       unsigned int cnt = 0;
     
    #ifdef WITH_SSCANF     
     
       int mapId, xx, yy;
     
    #endif /* WITH_SSCANF*/
     
       printf("Enter the X coordinate :\n");
       x = getInt(buffStdin, sizeof(buffStdin)/sizeof(*buffStdin));
       printf("Enter the Y coordinate :\n"); 
       y = getInt(buffStdin, sizeof(buffStdin)/sizeof(*buffStdin));
     
       f = fopen("data.txt", "r");
       if (!f) {
          fprintf(stderr, "Cannot open file data.txt\n");
          exit(EXIT_FAILURE); 
       } 
     
       while (fgets(buffLine, sizeof(buffLine)/sizeof(*buffLine), f)) {
     
    #ifdef WITH_SSCANF
     
            ++cnt;      
            rc = sscanf(buffLine, "./BD-ORTHO-%*d/%*d/%*d-%*d-%d/%*d-%d-%d-%*d.txt\n", &mapId, &xx, &yy);
            if (rc == 3 && x == xx && y == yy) {
                printf("OK, line %u matches: for x=%d and y=%d the map number is %d\n", cnt, x, y, mapId);
            }
            else if (rc != 3) {
                badLine(cnt); continue;
            }          
     
    #else
     
            char const * lastSlash = strrchr(buffLine, '/');
            ++cnt;
            if (lastSlash) {
     
                int xFromFile, yFromFile;
                char * dashOne, * dashTwo, * dashThree; 
     
                dashOne = strchr(lastSlash, '-');
                if (dashOne) {
                  dashTwo = strchr(dashOne+1, '-');
                  if (dashTwo) { 
                     dashThree = strchr(dashTwo+1, '-');
                     if (dashThree) {
                         char coordinateValue[4+1] = { '\0' };
     
                         strncpy(coordinateValue, dashOne+1, dashTwo-dashOne-1); coordinateValue[4] = '\0';
                         xFromFile = strtol(coordinateValue, NULL, 10);
     
                         strncpy(coordinateValue, dashTwo+1, dashThree-dashTwo-1); coordinateValue[4] = '\0';
                         yFromFile = strtol(coordinateValue, NULL, 10);
     
                         if (x == xFromFile && y == yFromFile) {
                             char * dashBeforeMapNum = NULL;
                             char mapNumStr[3+1] = { '\0' }; int mapNum = 0;
                             printf("OK, line %u matches, now looking for the map id.\n",  cnt);
     
                             buffLine[lastSlash-buffLine] = '\0';
                             dashBeforeMapNum = strrchr(buffLine, '-');
     
                             if (dashBeforeMapNum) {
     
                                strncpy(mapNumStr, dashBeforeMapNum+1, 3); 
                                mapNumStr[3] = '\0';
                                mapNum = strtol(mapNumStr, NULL, 10);
                                printf("OK, for x:%d and y:%d, the map number is %d\n", x, y, mapNum);
                                found = 1;
                                break;
                             }
                             else {
                               badLine(cnt); continue;
                             }
                         }
                         else {
                           continue;
                         }       
                     }
                     else {
                        badLine(cnt); continue;
                     }
                  }
                  else {
                     badLine(cnt); continue;
                  }
               }
               else {
                   badLine(cnt); continue;
               }
            }
            else {
                badLine(cnt); continue;
            }
     
    #endif /* WITH_SSCANF*/        
     
       }
     
       fclose(f);
     
       if (!found) {
        printf("Sorry, no matching entry found\n"); 
       }
     
       return 0;
    }
    A+

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci de votre aide
    J'ai pu présenter mon projet complet hier

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

Discussions similaires

  1. Trouver une ligne dans un fichier
    Par Kyti dans le forum Langage
    Réponses: 4
    Dernier message: 22/07/2009, 11h42
  2. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  3. [VBA] insérer une ligne dans un fichier excel
    Par cokinoumasterflash dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2005, 18h52
  4. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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