我正在做一个管理建筑物中房间数量的 C 项目,在这里我可以选择预订或预先预订房间。
我的问题是我想不出一种将链表从一个文件传递到另一个文件的方法。
我的 main.c 看起来像这样(它是一个菜单):
int main()
{
printf("--------------------------------------------------------------------------------\n");
time_t t;
time(&t);
printf("Data: %s\n", ctime(&t));
printf("--------------------------------------------------------------------------------\n");
int opcao;
do{
printf("\n\tM E N U P R I N C I P A L\n");
printf("\n\n\t1 - Ver Reservas Actuais Por Ordem Cronologica");
printf("\n\n\t2 - Fazer A Sua Reserva");
printf("\n\n\t3 - Estado Da Sua Reserva");
printf("\n\n\t4 - Cancelar A Sua Reserva");
printf("\n\n\t5 - Sair");
printf("\n\n\n\t\tOpcao: ");
scanf("%d", &opcao);
printf("\n");
fflush(stdin); /*Limpa o Buffer*/
switch (opcao)
{
case 1 : Listar_Fila(FILA Fila); break;
case 2 : lista_reserva(); break;
/*case 3 : estado_reserva(); break;
case 4 : cancelar_reserva(); break;*/
case 5 : puts("Obrigado por ter preferido o nosso sistema!");break;
default : puts("OPCAO INVALIDA!!");
}
getchar(); /*Para a tela*/
}
while (opcao!=5);
}
这就是我做我的链表的方式:
void lista_reserva()
{
FILA F;
char prim_nome_temp[100];
char ult_nome_temp[100];
int hora_inic_temp_h , hora_inic_temp_m;
int hora_fim_temp_h , hora_fim_temp_m;
int sala_temp;
inicia_fila(&F);
puts("Iniciar");
Listar_Fila(F);
printf("Inserir Primeiro Nome: ");
scanf("%s",prim_nome_temp);
printf("Inserir Ultimo Nome: ");
scanf("%s",ult_nome_temp);
printf("Indique que sala pretende reservar: ");
scanf("%d", &sala_temp);
printf("Inserir hora de inicio (HH:MM): ");
scanf("%02d:%02d",&hora_inic_temp_h, &hora_inic_temp_m);
printf("Inserir hora de fim (HH:MM): ");
scanf("%02d:%02d",&hora_fim_temp_h , &hora_fim_temp_m);
insere_fila(&F, sala_temp, hora_inic_temp_h , hora_inic_temp_m , hora_fim_temp_h , hora_fim_temp_m , prim_nome_temp , ult_nome_temp);
Listar_Fila(F);
}
/* Iniciar uma fila */
void inicia_fila(FILA *Fila)
{
*Fila = NULL;
}
/*Inserir na Fila */
void insere_fila(FILA *Fila , int sala , int hora_inic_h , int hora_inic_m , int hora_fim_h , int hora_fim_m , char *prim_nome , char *ult_nome)
{
if (*Fila == NULL)
{
*Fila = (FILA) malloc(sizeof(reservas));
if (*Fila == NULL)
return;
((*Fila)-> sala = sala);
((*Fila)-> hora_inic_h = hora_inic_h);
((*Fila)-> hora_inic_m = hora_inic_m);
((*Fila)-> hora_fim_h = hora_fim_h);
((*Fila)-> hora_fim_m = hora_fim_m);
strcpy((*Fila)-> prim_nome , prim_nome);
strcpy((*Fila)-> ult_nome , ult_nome);
(**Fila).proximo = NULL;
}
else
insere_fila(&(**Fila).proximo , sala , hora_inic_h , hora_inic_m , hora_fim_h , hora_fim_m , prim_nome , ult_nome );
}
这就是我打印它的方式:
void Listar_Fila(FILA Fila)
{
if (Fila == NULL)
return; /*Não existem elementos*/
printf("Sala %d das %d:%d as %d:%d, reservado por %s %s\n\n", Fila -> sala ,Fila ->hora_inic_h , Fila -> hora_inic_m ,Fila -> hora_fim_h , Fila -> hora_fim_m , Fila -> prim_nome , Fila -> ult_nome);
Listar_Fila(Fila -> proximo);
}
很抱歉我的项目不是英文的,而且我知道它有很多初学者的错误,因为我以前从未使用过 C 语言,而我这样做只是一个挑战。
请帮助我改进任何建设性的批评。
谢谢