0

尝试调用函数时似乎出现错误。

我的目标是向用户询问一些数据,然后将其“保存”在链接列表中。

这是我的头文件:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

/*Protótipos*/

/* VARIÁVEIS GLOBAIS */
extern int sala_temporario , horas_inicio_temporario , minutos_inicio_temporario , horas_fim_temporario , minutos_fim_temporario;
extern char primeiro_nome_temporario[20] , ultimo_nome_temporario[20];
extern int sala , horas_inicio , horas_fim;
extern char primeiro_nome[20] , ultimo_nome[20];
/********************/

typedef struct lnode *List;

typedef struct lnode
{
    int sala, horas_inicio , minutos_inicio , horas_fim , minutos_fim;
    char primeiro_nome[20] , ultimo_nome[20];
    List next;
} List_node;



/*void procura_lista (List lista, ITEM_TYPE chave, List *ant, List *actual);*/

List cria_lista (void);
void fazer_reserva(int sala_temporario,int horas_inicio_temporario,int minutos_inicio_temporario,int horas_fim_temporario,int minutos_fim_temporario,char *primeiro_nome_temporario,char *ultimo_nome_temporario);
void Insere_Lista (List lista, int sala , int horas_inicio , int horas_fim , char *primeiro_nome , char *ultimo_nome);

这里是我要求用户输入我想放在列表中的数据的地方:

void fazer_reserva(int sala_temporario,int horas_inicio_temporario,int minutos_inicio_temporario,int horas_fim_temporario,int minutos_fim_temporario,char *primeiro_nome_temporario,char *ultimo_nome_temporario)
{


    printf("Insira o seu primeiro nome: ");
    scanf("%s", primeiro_nome_temporario);

    printf("Insira o seu ultimo nome: ");
    scanf("%s", ultimo_nome_temporario);

    printf("Insira o numero da sala que quer reservar: ");
    scanf("%d", &sala_temporario);

    printf("Horas de inicio de reserva (HH:MM): ");
    scanf("%2d:%2d", &horas_inicio_temporario , &minutos_inicio_temporario);

    printf("Horas de fim de reserva (HH:MM): ");
    scanf("%2d:%2d", &horas_fim_temporario , &minutos_fim_temporario);

    Insere_Lista (List lista, sala_temporario , horas_inicio_temporario, minutos_inicio_temporario , horas_fim_temporario , minutos_fim_temporario , primeiro_nome , ultimo_nome);

}

这是我收到错误的程序部分:

Insere_Lista (List lista, sala_temporario , horas_inicio_temporario, minutos_inicio_temporario , horas_fim_temporario , minutos_fim_temporario , primeiro_nome , ultimo_nome);

这就是在列表中插入数据的方式:

void Insere_Lista (List lista, int sala , int horas_inicio , int minutos_inicio, int horas_fim , int minutos_fim , char *primeiro_nome , char *ultimo_nome)
{

    List no;
    no = (List) malloc (sizeof (List_node));
    if (no != NULL) {
        no-> primeiro_nome = primeiro_nome;
        no-> ultimo_nome = ultimo_nome;
        no-> sala = sala_temporario;
        no-> horas_inicio = horas_inicio;
        no-> minutos_inicio = minutos_inicio;
        no-> horas_fim = horas_fim;
        no-> minutos_fim = minutos_fim;



}

对不起“新手”的错误,我希望你能帮助我改进。谢谢你。

4

1 回答 1

0

此行有语法错误:

Insere_Lista (List lista, sala_temporario , horas_inicio_temporario, minutos_inicio_temporario , horas_fim_temporario , minutos_fim_temporario , primeiro_nome , ultimo_nome);

调用函数时不要将类型名称放在参数之前,只有在声明或定义函数时才可以。List所以你之前不应该有lista

另一个问题是你没有声明变量lista。也许您认为这样做会在调用函数的同时声明变量(就像您可以在 中声明变量一样for (int i = 0; ...))。这不起作用,因此您需要在调用函数之前声明变量。所以应该是:

List lista;
Insere_Lista (lista, sala_temporario , horas_inicio_temporario, minutos_inicio_temporario , horas_fim_temporario , minutos_fim_temporario , primeiro_nome , ultimo_nome);

我不确定为什么甚至需要这个论点。它与函数中的aux参数匹配Insere_Lista(),但从不使用该参数。

于 2013-06-04T01:41:49.553 回答