Если язык C (а не C ++), то объявление вашей функции wong:
struct enrollment(_tStudent T)
должно быть
void enrollment(_tStudent *T)
(и вам не нужно return
больше.)
В main
ваша декларация должна быть:
struct _tStudent iv;
и ваш вызов должен быть:
enrollment(&iv);
Вызовфункция всегда требует (
и )
, поэтому print;
должно быть print();
Но функция печати имеет локальную переменную uc
, и вы хотите ее распечатать.Но эта структура имеет мусорные значения.Вы хотите передать переменную iv
из main
, так:
void print(_tStudent *uc)
и вызвать:
print(&iv);
Обратите внимание, что все функции работают с указатели на фактическую переменную структуры.Указатель объявляется с помощью *
, и для вызова функции, которая получает указатель, вы должны взять адрес структуры, которую вы хотите передать.Вы делаете это с помощью &
.
В функции вы должны теперь разыменовать указатель.Вы делаете это с ->
:
scanf("%s",T->name); // in enrollment()
printf("%s",uc->name); // in print()