我正在尝试使用结构的数组,但是出了点问题

时间:2019-12-20 15:51:38

标签: c struct

如果仅添加一个播放器,我的程序将按预期运行。

第一个冰柱结束后,它问(用意大利语),我想做什么,如果我输入1,就可以创建一个新玩家。然后,它询问名称和姓氏,但在询问角色类型之后,它会被阻止,并从代码中退出。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 25

struct rol{
    int position;
    int lato;
};
typedef struct rol role;

struct pl{
    role *ruol;
    int shirt_num;
    char name[20];
    char lastn[20];
};
typedef struct pl player;

struct tm{
    int classpos;
    int pnt;
    player players[MAX];
};


typedef struct tm team;

void define_role (role *ruolo);
void make_pl(player *pl);
void print_pl(player *pl,int i,role *x);
int main(int argc, char** argv) {
    int risp,i;
    player *giocatore;
    int cont = 0;
    printf("Vuoi effettuare lavori su un giocatore o su una squadra ? \n [ 1) giocatore  2)  squadra] ");
    scanf(" %d",&risp);

    if(risp==1) {
        do {
            printf("\n\n1)Crea Giocatore \n 2)Modifica giocatore \n3)Inserisci giocatore in una squadra");
            printf("\n 4)Visualizza dati giocatore \n 5) Finish program");
            scanf(" %d",&risp);
            if(risp==1) {
                cont++;
                giocatore = (player*)malloc (cont*sizeof(player));
                if (giocatore== NULL) { 
            printf("Memory not allocated.\n"); 
            exit(0); 
            } 
                giocatore->ruol = (role*)malloc(cont*sizeof(role));
                if (giocatore->ruol== NULL) { 
            printf("Memory not allocated.\n"); 
            exit(0); 
            } 
                make_pl(&giocatore[cont-1]); //this is the main problem basically 
            }

            } while(risp != 5);
    }
    return 0;
}

void make_pl(player *pl) {
    printf("\n Inserisci nome ");
    scanf(" %s",pl->name);
    printf("\n Inserisci cognome ");
    scanf(" %s",pl->lastn);
    define_role(pl->ruol);
    printf("Inserisci numero di maglia ");
    scanf(" %d",&pl->shirt_num);
} 

void define_role(role *ruolo) {
    printf("\n Inserisci lato ");
    scanf("%d",&ruolo->lato);
    printf("\n Inserisci posizione ");
    scanf("%d",&ruolo->position);
}

这是显示为输出的内容:

Vuoi effettuare lavori su un giocatore o su una squadra ? 
 [ 1) giocatore  2)  squadra] 1


1)Crea Giocatore 
 2)Modifica giocatore 
3)Inserisci giocatore in una squadra
 4)Visualizza dati giocatore 
 5) Finish program 
1

 Inserisci nome bobby

 Inserisci cognome solo

 Inserisci lato 0

 Inserisci posizione 1
Inserisci numero di maglia 15


1)Crea Giocatore 
 2)Modifica giocatore 
3)Inserisci giocatore in una squadra
 4)Visualizza dati giocatore 
 5) Finish program
1

 Inserisci nome robert

 Inserisci cognome idunno

 Inserisci lato 1

RUN FAILED (exit value 1, total time: 45s)

因此,基本问题是我不能保存多个玩家。我有点分散,不知道出了什么问题。

0 个答案:

没有答案