2012-10-08 38 views
0

出於某種原因,我得到錯誤:'dlist_init':調用的參數太少。這是我的主要。我沒有看到dlist_init有什麼問題,或者我在main.dlist_init中使用它初始化雙向鏈表。這些函數位於main之後的數據文件中。Vistual Studio給我編譯錯誤:調用太少的參數

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
//#include "bool.h" 
#include "Dlinklist.h" 
#include "DlistElmt.h" 
#include "Dlist.h" 
#include "Dlistdata.h" 

    /**************************************************************************************************/ 

int main (int argc, char *argv[]) 
{ 
    FILE *ifp, *ofp; 
    //char outputFilename[] = argv[2]; 
    int *hour, *min; 
    Dlist *list; 
    float *temp; 
    char line[15]; 

    if (argc != 3) /* argc should be 3 for correct execution */ 
    { 
     /* We print argv[0] assuming it is the program name */ 
     printf("usage: %s filename", argv[0]); 
    } 
    else 
    { 
     // We assume argv[1] is a filename to open 
     ifp = fopen(argv[2], "r"); 

     if (ifp == 0){ 

      printf("Could not open file\n"); 
     } 

     else{ 

      ofp = fopen(argv[2], "w"); 

      dlist_init(list); 

      while (fscanf(ifp, "%d:%d %f ", &hour, &min, &temp) != EOF) { 
      //while(fgets(line, 100, ifp)){ 
       puts(line); 
       fprintf(ofp, "%s", line); 
       //if(sscanf("%d:%d %df", &hour, &min, &temp)==3){ 

       //} 
      } 

/**************************************************************************************************/ 

      /*while (fscanf(ifp, "%d:%d %df ", &hour, &min, &temp) != EOF) { 
       printf("the tempeture is %df at %d:%d\n", temp, hour, min); 
       fprintf(ofp, "the tempeture is %df at %d:%d\n", temp, hour, min);*/ 
/**************************************************************************************************/ 

      } 

fclose(ifp); 
fclose(ofp); 


     } 

    getchar(); 
} 

這是我的職能文件:

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
//#include "bool.h" 
#include "Dlinklist.h" 
#include "DlistElmt.h" 
#include "Dlist.h" 
#include "Dlistdata.h" 

/**************************************************************************************************/ 

void dlist_init(Dlist *list){ 

    list->size = 0; 
    list->head = NULL; 
    list->tail = NULL; 



} 

void dlist_destroy(Dlist *list){ 

    int *time; 
    int *time2; 
    float *temp; 

    while (list->size > 0){ 
     dlist_remove(list, list->head); 
    } 


} 

int dlist_ins_next(Dlist *list, DlistElmt *element, int *time, int *time2, float *temp1){ 

     DlistElmt *new_element; 


     if (element == NULL && dlist_size(list) != 0) 
      return -1; 
     if ((new_element = (DlistElmt *)malloc(sizeof(DlistElmt))) == NULL) 
      return -1; 
     new_element->hour = time; 
     new_element->min = time2; 
     new_element->temp = temp1; 
      if (dlist_size(list) == 0) { 

      list->head = new_element; 
      list->head->prev = NULL; 
      list->head->next = NULL; 
      list->tail = new_element; 

     } 

     else { 

      new_element->next = element->next; 
      new_element->prev = element; 

      if(element->next == list->tail) 
       list->tail = new_element; 
      else 
       element->next->prev = new_element; 
     } 

     element->next = new_element; 
     list->size++; 

     return 0; 

    } 

    int dlist_ins_prev(Dlist *list, DlistElmt *element, int *time, int *time2, float *temp1){ 

    DlistElmt *new_element; 

    if (element == NULL && dlist_size(list) != 0) 
     return -1; 

    if ((new_element = (DlistElmt *)malloc(sizeof(DlistElmt))) == NULL) 
     return -1; 

    new_element->hour = time; 
     new_element->min = time2; 
     new_element->temp = temp1; 

    if (dlist_size(list) == 0){ 

     list->head = new_element; 
     list->head->prev = NULL; 
     list->head->next=NULL; 
     list->tail = new_element; 

    } 

    else{ 

     new_element->next = element; 
     new_element->prev = element->prev; 

     if(element == list->head) 
      list->head = new_element; 
     else 
      element->prev->next = new_element; 

     element->prev = new_element; 

    } 

    list->size++; 

    return 0; 
    } 
int dlist_remove(Dlist *list, DlistElmt *element){ 

    if (element == NULL || dlist_size(list) == 0) 
     return -1; 


    if (element == list->head) { 

     list->head = element->next; 

     if (list->head == NULL) 
      list->tail = NULL; 
     else 
      element->next->prev = NULL; 
    } 

    else{ 

     element->prev->next = element->next; 

     if (element == list->tail) 
      list->tail = element->prev; 
     else 
      element->next->prev = element->prev; 
    } 

    free(element); 

    list->size--; 

    return 0; 

    } 
+0

「Dlist.h」中的聲明很重要。你沒有想到要發佈這麼好的可能性,以至於問題出現在那裏。 –

回答

0

Presumedly函數原型在頭文件中的一個聲明 - 它您提供的聲明相匹配?