Can';t从C中的函数返回结构

Can';t从C中的函数返回结构,c,function,struct,return,C,Function,Struct,Return,每次我读到employ.sex时,程序都会崩溃,没有错误,我不知道为什么会发生这种情况。我是C的新手。返回密码[I]有问题吗?请帮助,我在搜索中找不到任何东西。提前谢谢 #include <stdio.h> #define N 5 struct stoixeia { int age; float h; char sex; }; struct melos { char fname[50];

每次我读到employ.sex时,程序都会崩溃,没有错误,我不知道为什么会发生这种情况。我是C的新手。返回密码[I]有问题吗?请帮助,我在搜索中找不到任何东西。提前谢谢

#include <stdio.h>
#define N 5

struct stoixeia
    {
        int age;
        float h;
        char sex;
    };
struct melos
    {
        char fname[50];
        char lname[50];
        int mnum;
        struct stoixeia employ;
    };

struct melos diavasma(int );

int main()
{
    struct melos pin[N];
    struct melos * ptr;
    int i,pli;
    for(i=0;i<N;i++)
    {
        pin[i]=diavasma(i);
        printf("%d", pin[i].mnum); // i just use this to see if it returns anything
    }
    return 0;
}

struct melos diavasma(int i)
    {
        struct melos pin[i];
        struct stoixeia employ;
        printf("Dose onoma\n");
        scanf("%s", pin[i].fname);
        printf("Dose epitheto\n");
        scanf("%s", pin[i].lname);
        printf("Dose arithmo mitroou\n");
        scanf("%d", &pin[i].mnum);
        printf("Dose ilikia\n");
        scanf("%d", &pin[i].employ.age);
        printf("Dose upsos\n");
        scanf("%f", &pin[i].employ.h);
        printf("Dose fulo\n");
        scanf(" %c", &pin[i].employ.sex);
        return pin[i];
    }
#包括
#定义n5
斯托克赛亚结构
{
智力年龄;
浮动h;
性别;
};
结构甜瓜
{
char-fname[50];
字符名称[50];
国际货币基金组织;
结构斯托克赛亚雇用;
};
melos diavasma结构(内部);
int main()
{
结构melos pin[N];
结构melos*ptr;
int i,pli;

对于(i=0;i您很接近:与其声明一个数组,在该数组中使用一个元素结束,因此发生崩溃,不如声明一个结构:

struct melos diavasma(int i)
{
    struct melos pin;
    printf("Dose onoma\n");
    scanf("%s", pin.fname);
    printf("Dose epitheto\n");
    scanf("%s", pin.lname);
    printf("Dose arithmo mitroou\n");
    scanf("%d", &pin.mnum);
    printf("Dose ilikia\n");
    scanf("%d", &pin.employ.age);
    printf("Dose upsos\n");
    scanf("%f", &pin.employ.h);
    printf("Dose fulo\n");
    scanf(" %c", &pin.employ.sex);
    return pin;
}

注意,现在传递i是冗余的。除非您计划在提示中使用它,否则请考虑将其从函数的参数列表中移除。

您是关闭的:而不是声明一个数组,其中使用一个元素过去的结尾,因此崩溃,声明一个单独的结构:

struct melos diavasma(int i)
{
    struct melos pin;
    printf("Dose onoma\n");
    scanf("%s", pin.fname);
    printf("Dose epitheto\n");
    scanf("%s", pin.lname);
    printf("Dose arithmo mitroou\n");
    scanf("%d", &pin.mnum);
    printf("Dose ilikia\n");
    scanf("%d", &pin.employ.age);
    printf("Dose upsos\n");
    scanf("%f", &pin.employ.h);
    printf("Dose fulo\n");
    scanf(" %c", &pin.employ.sex);
    return pin;
}

注意,现在通过i是多余的。除非你计划在提示中使用它,否则考虑从函数的参数列表中删除它。< /P>你是否添加了C++标签?不,它在推荐的IT部分中,所以我只是添加了Itt当然不建议添加一个不同的语言的标签。弹出式显示你的TSP。否则,你也会添加C。我读了这个标签。抱歉,这是我第一次使用这个网站,不会再发生了。你有什么理由添加C++标签吗?不,它在推荐的IT部分,所以我只是添加了Itt当然不建议添加一个不同语言的标签。弹出式显示你的类型。-否则你也会添加C#。请阅读标签说明。很抱歉,这是我第一次使用此网站,不会再发生了。是这样的!谢谢,我是在数组中添加结构数组吗?这是我第一次使用结构,我仍然很困惑。是这样的!谢谢,我是在ar中添加结构数组吗雷?这是我第一次使用structs,但我还是很困惑