Extraction des mots

mimi - Modifié par jordane45 le 22/02/2014 à 15:34
 mimi - 22 févr. 2014 à 17:55
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

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
22 févr. 2014 à 15:43
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... )

0
merci bien vous etes très gentil :)
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
22 févr. 2014 à 17:27
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
0
ok merciiiiiiiiiiiiiii bien je reécrirai mon code une autre fois :)
0
Rejoignez-nous