Bonjour à tous, je tente de bien comprendre les structures en C mais je me heurte à un petit problème c'est la raison pour laquelle je viens ici..
Code fonctionnel :
main.c:
main.h:
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 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "main.h" int main(int argc, char *argv[]) { Caracteristiques cara; char proc[] = "Intel"; char os[] = "Windows"; strcpy(cara.Processeur, proc); strcpy(cara.OS, os); printf("Processeur: %s\nOs: %s", cara.Processeur, cara.OS); return 0; }
Lorsque je veux créer une fonction faisant exactement la même chose sa ne fonctionne pas..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED typedef struct Caracteristiques Caracteristiques; struct Caracteristiques { char Processeur[64]; char OS[32]; }; #endif // MAIN_H_INCLUDED
Code bugger:
Le main.h étant toujours le même.
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 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "main.h" void remplir(Caracteristiques cara, char *proc, char *os){ strcpy(cara.Processeur, proc); strcpy(cara.OS, os); } int main(int argc, char *argv[]) { Caracteristiques cara; char proc[] = "Intel"; char os[] = "Windows"; remplir(cara, proc, os); printf("Processeur: %s\nOs: %s", cara.Processeur, cara.OS); return 0; }
J'ai penser à mettre ma variable cara en tant que pointeur ou envoyé l'adresse mémoire à la place de la variable directement (ce qui me semble plus plausible mais le code présenté peut build au moins).
Des idées?
EDIT: Résolu:
Mais je me pose une autre question, comment faire pour déclarer ma variable cara en tant que pointeur pour ne pas envoyé d'adresse a ma fonction?
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 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "main.h" void remplir(Caracteristiques *cara, char *proc, char *os){ strcpy((*cara).Processeur, proc); strcpy((*cara).OS, os); } int main(int argc, char *argv[]) { Caracteristiques cara; char proc[] = "Intel"; char os[] = "Windows"; remplir(&cara, proc, os); printf("Processeur: %s\nOs: %s", cara.Processeur, cara.OS); return 0; }
Du genre:
Tout se passe bien jusqu'au printf ! Pourquoi le printf plante?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Caracteristiques *cara; remplir(cara, proc, os);
Partager