2013-01-13 58 views
0

我想準備我的項目,但void insertCourse(CourseNodePtr* cr, char* code);函數給參數2給語法錯誤;代碼在開關情況下1.任何人有一個想法,爲什麼它不工作?鏈接列表函數調用

 struct course{ 
     char code[10]; 
     char name[40]; 
     char instructor[40]; 
     char term[10]; 
     int year; 
     struct course *coursePtr; /* pointer to next node */ 
     }; 

typedef struct course Course; /* synonym for struct course */ 
typedef Course *CourseNodePtr; /* synonym for CourseNodePtr* */ 



/* Function Prototypes */ 
void insertCourse(CourseNodePtr* cr, char* code); 
char* deleteCourse(CourseNodePtr* cr, CourseNodePtr* inscr, char* code); 
void insertStudent(FILE* filePtr, StudentNodePtr* cr, int id); 
int deleteStudent(FILE* filePtr, StudentNodePtr* cr, int id); 
void displayStudent(FILE* filePtr, int id); 
void displayClassNumbers(FILE* filePtr, int id); 
void displayRecvCourse (FILE* filePtr, char* code, char* term, int year); 
void registration(FILE* filePtr); 
void instructions(void); 

int main(void) 
{ 
CourseNodePtr startPtr = NULL; /* initially there are no nodes */ 
StudentNodePtr startPtr1 = NULL; /* initially there are no nodes */ 
int choice; /* user's choice */ 

Course code; 
Student id; 
Course year; 


instructions(); /* display the menu */ 
printf("? "); 
scanf("%d", &choice); 

while (choice != 9) { 
     switch (choice) { 
      case 1: 

        printf("Pls enter the course code to be inserted.\n"); 
        scanf("%s", code); 
        insertCourse(&startPtr, char* code); 
        break; 
        /* 


     printf("? "); 
     scanf("%d", &choice); 


printf("End of run.\n"); 

getch(); 
return 0; /* indicates successful termination */ 
    } /* end main */ 



/* Insert course function */ 
void insertCourse(CourseNodePtr* cr, char* code) 
{ 
CourseNodePtr newPtr; /* New node pointer */ 
CourseNodePtr previousPtr; /* previous node pointer in list */ 
CourseNodePtr currentPtr; /* current node pointer in list */ 

newPtr = malloc(sizeof(Course)); /* memory allocation for new node */ 

if (newPtr != NULL) { 
      printf("Pls enter the code number of the course.\n"); 
      scanf("%s", &(newPtr->code)); 
      printf("Pls enter the course name.\n"); 
      scanf("%s", &(newPtr->name)); 
      printf("Pls enter the instructor name.\n"); 
      scanf("%s", &(newPtr->instructor)); 
      printf("Pls enter the term; Spring or Fall.\n"); 
      scanf("%s", &(newPtr->term)); 
      printf("Pls enter the year.\n"); 
      scanf("%s", &(newPtr->year)); 
      newPtr->coursePtr = NULL; 

      previousPtr = NULL; 
      currentPtr = *cr; 

      while ((currentPtr != NULL) && (code > currentPtr->code)) { 
       previousPtr = currentPtr; 
       currentPtr = currentPtr->coursePtr; 
      } /* End While */ 

      if (previousPtr == NULL) { 
       newPtr->coursePtr = *cr; 
       *cr = newPtr; 
      } /* End if */ 
      else { 
       previousPtr->coursePtr = newPtr; 
       newPtr->coursePtr = currentPtr; 
      } /* End else */ 
     } /* End if */ 

    else { 
     printf(" %c could not be inserted. Memory not enough...\n", code); 
    } /* End else */ 
    } /* End function insert */ 

回答

1

您不能輸入這樣的結構。 %s讀入字符串,而不是結構。你將不得不逐字閱讀。將代碼改爲字符串類型或動態分配的char數組。

編輯:也在這裏:

insertCourse(&startPtr, char* code); 

不能指定的char *類型爲code。相反,你應該做一個演員:

insertCourse(&startPtr, (char*)code); 
+0

非常感謝Ivaylo ..我有另一個問題;指令功能也給語法錯誤。指令功能如下 – Behzat

+0

空隙指令(無效) { 的printf( 「輸入您的選擇:\ n」 個 「1插入過程\ n」。 「2刪除一個課程\ n」。 「9到端。\ n「); }/*結束函數說明* /我在主要函數中調用指令();但編譯器在輸入結束時說出語法錯誤。 – Behzat

+0

我在此代碼中看不到任何錯誤。抱歉。 –