Fonction correcte en C-structure mais
bernard
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, j'ai écrit un petit programme qui m'initialise très bien les cases du tableau d'une variable à 0, le voici:
#include <stdio.h>
#include <stdbool.h>
#define MAX 10
struct garage {
int vehicule[MAX];
_Bool presence[MAX];
};
void initGarage(struct garage g){
int i;
for(i=0;i<MAX;i++){
g.presence[i] = 0;
}
}
int main(){
int i;
struct garage g;
initGarage(g);
for(i=0;i<MAX;i++){
printf("%d ", g.presence[i]);
}
return 0;
}
Mais le problème c'est que le main m'affiche des valeurs aléatoires au lieu des 0, serais ce par hasard une histoire de pointeurs manquant dans le main svp?
merci
#include <stdio.h>
#include <stdbool.h>
#define MAX 10
struct garage {
int vehicule[MAX];
_Bool presence[MAX];
};
void initGarage(struct garage g){
int i;
for(i=0;i<MAX;i++){
g.presence[i] = 0;
}
}
int main(){
int i;
struct garage g;
initGarage(g);
for(i=0;i<MAX;i++){
printf("%d ", g.presence[i]);
}
return 0;
}
Mais le problème c'est que le main m'affiche des valeurs aléatoires au lieu des 0, serais ce par hasard une histoire de pointeurs manquant dans le main svp?
merci
Configuration: Linux Mozilla 1.9.0.16
1 réponse
-
Salut,
En fait, c'est que tu ne modifies pas la structure de ton main mais une copie.
Pour initialiser, il te faudra passer l'adresse.
Voici une version corrigée :#include <stdio.h> #include <stdbool.h> #define MAX 10 struct garage { int vehicule[MAX]; _Bool presence[MAX]; }; void initGarage(struct garage *g){ int i; for(i=0;i<MAX;i++){ (*g).presence[i] = 0; } } int main(){ int i; struct garage g; initGarage(&g); for(i=0;i<MAX;i++){ printf("%d ", g.presence[i]); } return 0; }
Cdlt,