0

プロジェクトを準備しようとしていますが、void insertCourse(CourseNodePtr* cr, char* code);関数で引数 2 の構文エラーが発生しています。switch ケース 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 */ 
4

1 に答える 1

1

そのような構造には入ることができません。%s構造体ではなく、文字列を読み込みます。フィールドを 1 つずつ読み取る必要があります。または、コードを文字列型または動的に割り当てられた char 配列に変更します。

編集:ここにも:

insertCourse( &startPtr, char* code);

の型として char* を指定することはできませんcode。代わりに、キャストを行う必要があります。

insertCourse( &startPtr, (char*)code);
于 2013-01-13T09:37:30.160 に答える