Programma C urgent SVP
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
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
1 réponse
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 :
Bonne chance
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