Bonjour à tous.
Je suis développeur de base windev, et je me lance dans le C qui est plus prêt de ce qui se passe côté machine.
Je suis en train de suivre un cours et je voudrais réaliser un pendu (classique).
Je voudrais donc essayer de faire au plus propre possible en utilisant des malloc et des struct
voici donc mon code :
Résultats :
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 #include <ctype.h> #include <stdio.h> #include <stdlib.h> typedef struct Test Test; struct Test { int coupsRestants; int taille; char *motSecret; char *motCache; }; void allocationCHaine(char *tempChar){ tempChar = malloc(6 * sizeof(char)); tempChar[0] = 'S'; tempChar[1] = 'A'; tempChar[2] = 'L'; tempChar[3] = 'U'; tempChar[4] = 'T'; tempChar[5] = '\0'; printf("tempChar : %s\n",tempChar); } void initStruct(Test *tempTest){ tempTest->taille = 0; tempTest->coupsRestants = 0; tempTest->motSecret = NULL; tempTest->motCache = NULL; allocationCHaine(tempTest->motSecret); } int main(int argc, char const *argv[]) { Test mainStruct; initStruct(&mainStruct); printf("mainStruct.motSecret : %s\n",mainStruct.motSecret); return 0; }
tempChar : SALUT
mainStruct.motSecret : (null)
Je tiens à préciser que chez moi ces fonctions sont dans différents fichiers mais je voulais simplifier, le principe est le même
Je cherche donc à affecter ma chaine directement avec un malloc plutôt qu'un tableau fixe.
Le problème ici c'est que forcément on ne modifie pas la chaine de la structure.
Je suis donc dans la logique tenté de faire :
Sauf que là, ça ne compile pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void allocationCHaine(char *tempChar){ *tempChar = malloc(6 * sizeof(char)); *tempChar[0] = 'S'; *tempChar[1] = 'A'; *tempChar[2] = 'L'; *tempChar[3] = 'U'; *tempChar[4] = 'T'; *tempChar[5] = '\0'; printf("tempChar : %s\n",tempChar); }
Pouvez-vous un peu m’éclairer sur tous ces principes et sur la solution à adopter ?
Brody
Partager