Bonjour,
Dans ce bout de code, je crée un tableau dynamique pour y stocker la chaine de caractère entrée par l'utilisateur.
J'ai des consignes d'exercices qui sont celle ci:
Le code fonctionne a plusieurs reprise, mais plante au bout d'un certains nombre d'essais en m'affichant cette fenêtreÉcrire une fonction capable de lire au clavier une chaîne de caractères de taille quelconque.
Tant que l’utilisateur introduit des caractères, il faudra les stocker dans la chaîne de caractères.
La fin de lecture étant signalée par l’utilisateur au moyen de la touche <enter>.
Le programme appelant ne réserve pas de place mémoire. Il se contente de faire appel à la
fonction et d’afficher le résultat.
Si je relance de suite après, j'ai le plantage qui revient quasi systématiquement plusieurs fois d'affilée.. puis le code refonctionne pour qlq essais..
Bizarrement, ca affiche tjrs le même nombre de caractères (4) avant de planter..
le code :
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 int main(int argc, char *argv[]) { // ======================================================================================================= // VARIABLE(S) LOCALE // ======================================================================================================= int i = 0; int j = 1; char cTemp; char *tTabChaine = NULL; // ======================================================================================================= // CODE // ======================================================================================================= printf("Entrer une chaine de caractere : "); tTabChaine = malloc(sizeof(char)); if (tTabChaine == NULL) { exit(0); printf("Erreur malloc!!!"); } do { cTemp = fgetc(stdin); realloc(tTabChaine, j + 1); if (tTabChaine == NULL) { exit(0); printf("Erreur realloc!!!"); } tTabChaine[i] = cTemp; printf("%c", tTabChaine[i]); j++; i++; } while (cTemp != '\n'); realloc(tTabChaine, j + 1 * sizeof(char)); if (tTabChaine == NULL) { exit(0); printf("Erreur realloc!!!"); } tTabChaine[i] = '\0'; printf("%s\n", tTabChaine); free(tTabChaine); return 0; }
Est ce qlq'un a une idée de pq ca me fait cette erreur de temps en temps, mais pas à chaque fois??
Je sais que le code est un peu brut de décoffrage, mais je l’affinerais après que je sois sur qu'il fonctionne..
Merci d'avance a ceux qui prendront le temps de réponde
Partager