首页 > 解决方案 > c中的注册功能

问题描述

所以我的任务是制作一个结构,它将输入学生的姓名、姓氏、学校和班级。问题是我需要创建 2 个功能,一个将进行注册(询问您的姓名、姓氏、学校和班级),另一个将打印您输入的所有内容。语言是 C,我真的需要帮助。我不太擅长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;
}

标签: cfunctionstruct

解决方案


如果语言是 C(而不是 C++),那么你的函数声明是 wong:

struct enrollment(_tStudent T)

应该

void enrollment(_tStudent *T)

(你不再需要return了。)


main您的声明中应该是:

struct _tStudent iv;

你的电话必须是:

enrollment(&iv);

调用函数总是需要(and ),所以print;应该是print();但是 print 函数有一个局部变量uc,你想打印它。但是该结构具有垃圾值。你想从传递变量ivmain,所以:

void print(_tStudent *uc)

并致电:

print(&iv);

请注意,所有函数都使用指向实际结构变量的指针。使用 声明指针,*并且要调用接收指针的函数,您必须获取要传递的结构的地址。你用&.

在函数中,您现在必须取消引用指针。你这样做->

scanf("%s",T->name);     // in enrollment()
printf("%s",uc->name);   // in print()

推荐阅读