Je travaillais donc sur un projet avec des structures imbriquées et en passant des structures à des fonctions en tant qu'arguments.Structure passée à fonctionner comme paramètre mais ne fonctionnant pas correctement
Voici ma fonction principale:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct date {
int dd;
int mm;
int yy;
};
struct employee {
char fn[50];
char ln[50];
struct date dob;
struct date sd;
int salary;
};
void take_input(struct employee e);
void give_output(struct employee e);
int main(void)
{
struct employee a; struct employee b; struct employee c; struct employee d; struct employee f;
take_input(a);
take_input(b);
take_input(c);
take_input(d);
take_input(f);
give_output(a);
give_output(b);
give_output(c);
give_output(d);
give_output(f);
return 0;
}
Et voici les deux fonctions:
void take_input(struct employee e)
{
printf("\nFirst name: ");
gets(e.fn);
printf("\nLast name: ");
gets(e.ln);
printf("\nDate of Birth: ");
scanf("%d %d %d", &e.dob.dd, &e.dob.mm, &e.dob.yy);
printf("\nDate of Joining: ");
scanf("%d %d %d", &e.sd.dd, &e.sd.mm, &e.sd.yy);
printf("\nSalary: ");
scanf("%d", &e.salary);
}
void give_output(struct employee e)
{
printf("%s", e.fn);
printf(" %s", e.ln);
printf("\nDate of Birth: %d/%d/%d", e.dob.dd, e.dob.mm, e.dob.yy);
printf("\nStarting Date: %d/%d/%d", e.sd.dd, e.sd.mm, e.sd.yy);
printf("\nSalary: $%d\n", e.salary);
}
Le problème est la fonction de la prise d'entrée et le stockage des données ne fonctionne pas. Chaque fois que le programme s'exécute, il prend une entrée, mais lors de l'impression, il donne une valeur de poubelle. Mais si je le lance sans fonctions (sous la fonction main()) cela fonctionne bien avec les mêmes codes. Je n'arrive pas à comprendre le problème dans le code, donc toute aide est appréciée.
Le passage de grandes structures en valeur peut également être un sérieux problème de performance. – tofro