如果仅添加一个播放器,我的程序将按预期运行。
第一个冰柱结束后,它问(用意大利语),我想做什么,如果我输入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)
因此,基本问题是我不能保存多个玩家。我有点分散,不知道出了什么问题。