Programma C urgent SVP

cyrine84 -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
programmation C
J'ai un ficher texte qui contient des lignes separés par un retour chariot;
chaque ligne contient des mots
le but c'est d'extraire les different mots du texte sans citer les occurence, mais il faut afficher pour chaque mot le num de la ligne ou il se trouve et le num de la position.
Exemple : Boris est un champion .
Je suis un champion
Normallement ca sera un tableau qui afficher les reusltat svts:
Boris(1,0)
est(1,1)
un (1,2),(2,2)
champion(1,3)(2,3)
je(2,0)
suis (2,1)

MErci d'avance
Configuration: Windows Vista
Internet Explorer 7.0

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Ca se fait facilement avec strtok (pour extraire les mots de chaque ligne + leur position), d'autant qu'un exemple assez bien fait est donné dans le man, qu'il te suffira d'adapter :
    EXEMPLE
           Le  programme suivant utilise des boucles imbriquées qui utilisent str‐
           tok_r() pour scinder une chaîne en une  hiérarchie  d’éléments  à  deux
           niveaux. Le premier argument de la ligne de commande spécifie la chaîne
           à analyser. Le second argument spécifie le(s) séparateur(s)  utilisé(s)
           pour  séparer  la chaîne en éléments « majeurs ». Le troisième argument
           spécifie le(s)  séparateur(s)  utilisé(s)  pour  séparer  les  éléments
           « majeurs » en sous-éléments.
    
           #include <stdio.h>
           #include <stdlib.h>
           #include <string.h>
    
           int
           main(int argc, char *argv[])
           {
               char *str1, *str2, *token, *subtoken;
               char *saveptr1, *saveptr2;
               int j;
    
               if (argc != 4) {
                   fprintf(stderr, "Usage: %s string delim subdelim\n",
                           argv[0]);
                   exit(EXIT_FAILURE);
               }
    
               for (j = 1, str1 = argv[1]; ; j++, str1 = NULL) {
                   token = strtok_r(str1, argv[2], &saveptr1);
                   if (token == NULL)
                       break;
                   printf("%d: %s\n", j, token);
    
                   for (str2 = token; ; str2 = NULL) {
                       subtoken = strtok_r(str2, argv[3], &saveptr2);
                       if (subtoken == NULL)
                           break;
                       printf(" --> %s\n", subtoken);
                   }
               }
    
               exit(EXIT_SUCCESS);
           } /* main */
    
           Voici un exemple de la sortie produite par ce programme :
    
           $ ./a.out ’a/bbb///cc;xxx:yyy:’ ’:;’ ’/’
           1: a/bbb///cc
                    --> a
                    --> bbb
                    --> cc
           2: xxx
                    --> xxx
           3: yyy
                    --> yyy
    

    Bonne chance
    0