ここで、ssize は配列の入力サイズ、student はグローバルに宣言された構造体、read_stud は配列を読み取るために使用する関数です。
印刷すると、 s[count].first は正しい名を示しますが、 s[0] とその後のすべての値は、以前に入力した値ではなく、同じ名でもあります。構造体の値を最新の入力に変更しています!
struct student //this struct is global
{
int number;
char *first ;
char *last ;
};
struct student read_stud (int number, char *first , char *last) //my read_stud function
{
struct student s;
s.number = number;
s.first = first;
s.last = last;
return s;
}
これはint main
、関数を使用する場所にありますs = calloc(ssize, sizeof (struct student));
for (count = 0; count < ssize ; ++count)
{
printf ("Enter student number, name and last name: \n");
scanf ("%d %s %s", &number, &first, &last);
s[count] = read_stud (number, first, last);
}
これを修正してくれる人に心から感謝します!