Bonjour,
en fait ca fait un jour que ej suis bloqué une erreur affiché par le compilateur et que j'arrive pas à la résoudre.
Le but de l'exercice est le suivant :
- La fonction char **decompose_chaine(char *chaine) parcourt la chaine fournie en argument, alloue le tableau, alloue les chaines correspondant aux mots et retourne un pointeur sur le tableau alloué. Si aucun mot n’est trouvé dans la chaine, la fonction retourne la valeur NULL.
l'erreur affiché est : La variable nb_char est utilisé sans etre initialisée.
Je vous remercie d'avance pour toutes suggestions de votre part, et voici ce que j'ai codé.
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 #include <stdio.h> #include <stdlib.h> // affichage du tableau void afficher_tab_mots(char **tab){ int i = 0, j = 0; if(tab == NULL){ printf(" le pointeur est NULL !!! \n"); exit(1); } while(tab[i] != NULL){ printf(" %s\n",tab[i]); i++; } } //decomposition de la chaine char **decompose_chaine(char *chaine){ char ** tab; int * nb_char, nb_mots = 0; //nb_char[i] est le nombre de caractere du i° eme mot int espace = 0, p=0; int i, j, k=0; /*comptage des mots de la chaine de carateres*/ while(chaine[p] != '\0'){ if(chaine[p] == ' '){ nb_char[nb_mots] = espace; //espace est le nombre de caratere de chaque mot nb_mots++; espace = -1; } p++; //p est l'indice du caratere dans la chaine espace++; } nb_char[nb_mots] = espace; nb_mots++; /*allocation du tableau de chaine de caracetres*/ tab = (char **) malloc(nb_mots * sizeof(char *)); for(i = 0; i < nb_mots; i++){ tab[i] = (char * ) malloc(nb_char[i]* sizeof(char)); } /*remplissage du tableau alloué tab*/ for(i = 0; i < nb_mots; i++){ for(j = 0; i < nb_char[i]; j++){ tab[i][j] = chaine[k]; k++; } k++; } return tab; } int main(){ char * chaine = "Je suis yassine etudiant a jussieu"; char ** tab = decompose_chaine(chaine); afficher_tab_mots(tab); return 0; }
Partager