функция регистрации в с - PullRequest
0 голосов
/ 02 февраля 2019

Таким образом, моей задачей было создать структуру, которая будет включать имя, фамилию, школу и класс ученикаПроблема в том, что мне нужно сделать 2 функции, одна из которых будет выполнять регистрацию (попросить у вас имя, фамилию, школу и класс), а другая напечатает все, что вы ввели.Язык C, и мне действительно нужна помощь.Я не очень хорош в Си, так что прости меня, если я сделал глупую ошибку.

    #include "stdafx.h"

typedef struct uc
{
    char name[20];
    char surname[20];
    char school[30];
    char clas[30];
}_tStudent;

 struct enrollment(_tStudent T)
{
    printf("Name:");
    scanf("%s",T.name);
    printf("Surname:");
    scanf("%s",T.surname);
    printf("School:");
    scanf("%s",T.school);
    printf("Class:");
    scanf("%s",T.clas);
    return T;
};
void print()
{
    _tStudent uc;
    printf("%s",uc.name);
    printf("%s",uc.surname);
    printf("%s",uc.school);
    printf("%s",uc.clas);
}

int _tmain(int argc, _TCHAR* argv[])
{
    //declarations
    int a;
    int b;
    struct uc iv;
    //work

    printf("Enter new student(0),print every student that u have(1)\n");
    scanf("%d", &a);
    if (a==0)
    {
        enrollment(iv);
    }
    else
    {
        print;
    }
    return 0;
}

1 Ответ

0 голосов
/ 02 февраля 2019

Если язык 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()
...