2017-06-20 7 views
-1

Ich versuche zu verstehen, warum ich diese Ausgabe bekomme, legte ich eine While-Schleife, um zu einer anderen Methode ausgehen, ich weiß nicht, warum es nicht funktioniert! Die Operation bei der Fehlersuche zeigt mir den Wert 1, die gleiche Bedingung für die Einfügung in die if-Klausel und die Registermethode, um "Test" auf dem Bildschirm zu drucken.C - While loop error

//Struct Student 
typedef struct { 

    char name[50]; 
    float grade[4]; 
    int status; 

} Student; 

Student students[MAX_STUDENT]; 

//Methods Statements 
void menu(); 
void registerStudent(); 
void deleteStudent(); 
void reproved(); 
void search(); 

int operation; 

int main() { 

    menu(); 
    return 0; 
} 

//Display menu 
void menu(){ 

    system("cls"); 

    while(operation != 5){ 


     printf("1 - Register Student\n"); 
     printf("2 - Delete Student\n"); 
     printf("3 - Reproved Students\n"); 
     printf("4 - Find Student\n"); 
     printf("5 - Exit\n"); 
     scanf("%i", &operation);  

     if(operation == 1){ 
      registerStudent(); 
     } 

    }; 

} 

void registerStudent(){ 

    char name[50]; 
float grade[4]; 

int op; 
int i; 

while(op != 0){ 

    system("cls"); 
    printf("Type the name: "); 
    //Fgets to read line 
    fgets(name, sizeof(name), stdin); 
    printf("First two months: "); 
    scanf("%f", &grade[0]); 
    printf("Second two months: "); 
    scanf("%f", &grade[1]); 
    printf("Third two months: "); 
    scanf("%f", &grade[2]); 
    printf("Fouth two months: "); 
    scanf("%f", &grade[3]); 
    printf("1 - Continue\n"); 
    printf("0 - Exit\n"); 

    for(i=0; i<MAX_STUDENT; i++){ 

     if(students[i].status == 0){ 

      students[i].grade[0] = grade[0]; 
      students[i].grade[1] = grade[1]; 
      students[i].grade[2] = grade[2]; 
      students[i].grade[3] = grade[3]; 
      strcpy(students[i].name, name); 
      break; 
     } 
    } 

} 

} 

Ausgang:

enter image description here

PS: Jetzt seine Arbeiten!

+0

es funktioniert für mich. Stellen Sie sicher, dass Sie alle notwendigen 'include' Dateien haben. – Barmar

+0

Nach "Test" eine neue Zeile einfügen. – Barmar

+0

Die 'while()' Schleife endet, wenn sie 5 eingeben, aber das Menü sagt 0. – Barmar

Antwort

1

In menu()operation wird nicht initialisierten verwendet und in registerStudent()op auch nicht initialisierte verwendet wird.