2017-06-20 171 views
-1

即時通訊試圖瞭解爲什麼我得到這個輸出,我把一個while循環出去到另一個方法,我不知道它爲什麼不工作!在調試操作顯示我的價值1,相同的條件,以if的勞工intry和調用登記方法在屏幕上打印「測試」。C - 雖然循環錯誤

//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; 
     } 
    } 

} 

} 

輸出:

enter image description here

PS:現在它的工作!

+0

它適合我。確保你有所有必要的'#include'文件。 – Barmar

+0

在'test'後放一個換行符。 – Barmar

+0

'while()'循環結束時,他們鍵入5,但菜單說0. – Barmar

回答

1

menu()operation用於未初始化,並在registerStudent()op也用於未初始化。