2
したがって、構造体をネストして構造体を引数として関数に渡していました。ここで構造体がパラメータとして機能するために渡されましたが、正しく機能しません。
は私の主な機能です:
#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;
}
そして、ここでは2つの機能は以下のとおりです。
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);
}
問題は、入力を服用して動作していないデータを格納するための機能です。プログラムが実行されるたびに入力が行われますが、印刷中はいくらかのガベージ値が与えられます。しかし、(main()関数の下で)関数なしで実行すると、同じコードで正常に動作します。私はコード内の問題を把握することができないので、どんな助けにも感謝します。
大きな構造体を値で渡すことは、重大なパフォーマンスヒットになることもあります。 – tofro