Extraction des mots

Signaler
-
 mimi -
salut tous le monde
je suis très débutante en c et j'ai besoin de corriger ma faute..
j'écris un petit programme qui découpe une phrase en des mots et celui ça marche bien mais le problème est que j'ai besoin de remplir ces mots dans un tableau.
Merci bien d'avance.. voila mon code


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 1000000


void main()

{
    char tab[100000]; int j=1;
    char chaine[]="ce livre est consacré à l'etude des bases de donnnées et plus       particuliérement à l'etude des bases de données XML";
int i;
for(i=0;chaine[i]!='\0';i++)
{
    if(chaine[i]!=' ')
    {
         tab[j]=chaine[i]; j++;
    }
     else printf("\n");
}
}

4 réponses

Messages postés
31218
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2021
342
Bonjour,

1 - J'ai édité ton message pour y ajouter la coloration syntaxique => les balises de code
Merci d'y penser lors de tes prochains messages.

2 - Je ne fais pas de C mais ta boucle FOR me parait étrange.
for (i = 0 ; i < 10 ; i++){

}


Ne devrais tu pas plutot utiliser une boucle While ?

Sinon pour ce qui est de ton souci.. peux tu nous en dire plus.
Qu'est-ce qui ne fonctionne pas ?

- Ne devrais tu pas déclarer ton tableau ( Tab) avant de l'utiliser.
- Ne faudrait-il pas le redimensionner au fur et à mesure que tu lui ajoute une valeur ?
( Comme je te l'ai dit.. je ne fais pas de C .. ce ne sont que des hypothèses... )

merci bien vous etes très gentil :)
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
Bonjour.

@jordane45: En C, il n'existe pas de tableau dynamique, il faut redimensionner soi-même. C'est pareil dans tous les langages, sauf que la plupart propose des "wrappers" qui le font de manière transparente (à tel point que certains pensent vraiment qu'en informatique un tableau puissent se redimensionner). La solution la plus simple (pas nécessairement la meilleure) est donc bien de prendre un tableau trop grand.
Sa boucle for est correcte. Elle va du début à la fin de la chaîne, aucun souci.

@mimi:
Tu peux utiliser un tableau fixe comme tu le fais, ce qui t'évite de redimensionner. Mais ton tableau doit être un tableau de "mots" et non un tableau de "lettres". Donc ça devrait être: "char* tab[10000]".
Deux solutions s'offrent alors à toi.
1) Tu utilises "strtok" qui permet "d'avancer de mot en mot" (je te laisse regarder la documentation).
ou
2) Tu places un pointeur sur le début d'un mot, et autre pointeur sur la fin. Tu recopies de "debut" jusqu'à "fin" (via strncpy). Tu places "debut" sur "fin" et tu avances "fin" sur le prochain séparateur. Tu répètes l'opération pour chaque mots.

Autres détails techniques:
- conio.h n'a rien à faire là.
- La signature d'une fonction est "int main(void)" (avec un return 0) et non "void main()". C'est important de bien le respecter.

__________________________________________________________________________________________________
Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
ok merciiiiiiiiiiiiiii bien je reécrirai mon code une autre fois :)