2013-06-04 76 views
0

當我嘗試調用函數時,似乎出現錯誤。C」錯誤:「列表」前的預期表達式「

我的目標是要求用戶輸入一些數據,然後「保存」到鏈接列表中。

這是我的頭文件:

#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

只需從導致錯誤的行中刪除「'List' ... –

+0

仔細閱讀您的第一個編譯器錯誤。它會告訴你檢測到錯誤的代碼行。這聽起來像你在該行之前有不正確的語法。 – axon

回答

0

此行有一個語法錯誤:

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

調用函數時,聲明或定義函數,只有當你不把類型名稱參數之前。所以你在lista之前不應該有List

另一個問題是,您還沒有聲明變量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); 

我不確定爲什麼甚至需要這個參數。它與Insere_Lista()函數中的aux參數相匹配,但該參數從不使用。

+0

謝謝你的回答。我將在明天實施這些更改並回復一些反饋意見。 「aux」參數不正確,應該是「lista」。編輯 – TomasCarvalho