2017-05-25 135 views
-2

所以我目前試圖學習C,通過任務工作,我一直在同樣的錯誤員工結構

對於未來背景:

進出口有望編寫一個程序,4個功能 -

read_employee(讀取的名稱,id和工資和存儲這些在 僱員變量,然後將其返回),

print_employee(讀取僱員結構,僱員的打印詳情),

employee_total_salary(接受僱員值的一個參數 並且在另一個參數陣列的尺寸的陣列,並返回總和

employee_index_search(從僱員結構搜索ID)

的所有他們的工資。)

這是僞代碼即時告知由去:

1: Print the message "-- Enter Array 1 Employee Data –" 
2: Loop i for each index of test_array1 
3: Assign test_array1 at index i, the result of calling read_employee 
4: Print the message '-- Enter Array 2 Employee Data --' 
5: Loop i for each index of test_array2 
6: Assign test_array2 at index i, the result of calling read_employee 
7: Print the message "-- Test Array 1 --" 
8: Loop i for each index of test_array1 
9: Call print_employee, passing in test_array1 at index i 
10: Print 'Total : ', employee_total_salary (test_array1, 5) 
11: Print the message '-- Test Array 2 --' 
12: Loop i for each index of test_array2 
13: Call print_employee, passing in test_array2 at index i 
14: Print "Total : ", employee_total_salary (test_array2, 10) 
15: Store in i, the employee_index_search passing in test_array1 , and the id 123 and 
size 5 
16: if something was found 
17: Call print_employee passing in the located computer from testArray1 
18: else 
19: Print the message " array 1 does not contain a employee with id 123" 

這是我寫的代碼:

 #include <stdio.h> 

struct employee{ 
    char name[20]; 
    int emp_id; 
    float salary; 
}; struct employee e[]; 

void read_employee() 
{ 
    int i = 0; 
     printf("%dEnter Employee Name: ", i); 
     scanf("%s", &e[i].name); 
     printf("Enter in ID: "); 
     scanf("%d", &e[i].emp_id); 
     printf("Enter in Salary: "); 
     scanf("%f", &e[i].salary); 
     i++; 
} 

void print_employee(){ 
    for (int i = 0; i > 10; ++i) 
    { 
     if (e[i].salary < 4000) 
     { 
      printf("%s(%d):%f - Level A", e[i].name, e[i].emp_id, e[i].salary); 
     } 
     else if (e[i].salary > 5000) 
     { 
      printf("%s(%d):%f - Level B", e[i].name, e[i].emp_id, e[i].salary); 
     } 
     else 
     { 
      printf("%s(%d):%f", e[i].name, e[i].emp_id, e[i].salary); 
     } 
    } 
} 

//int employee_total_salary(){ 
    //int total; 
    //sizeof(e.salary); 

    //total = sizeof(e.salary) + e.salary; 
    //return total; 
//} 

int employee_index_search(){ 
    int *id; 
    int size = 5; 

    for (int i = 0; i < size; i++) 
    { 
     if (e[i].emp_id == id) 
     { 
      printf("%s(%d):%f", e[i].name, e[i].emp_id, e[i].salary); 
     } 
     else 
     { 
      printf("Array 1 does not contain an employee with ID 123"); 
      return -1; 
     } 
    } 
return 0; 
} 

int main(){ 
    int test_array1[5]; 
    int test_array2[10]; 
    int i; 

    printf("\n-- Enter Array 1 Employee Data --\n"); 
    for (int i = 0; i < 5; i++) 
    { 
     read_employee(&test_array1[i]); 
    } 
    printf("\n-- Enter Array 2 Employee Data --\n"); 
    for (int i = 0; i < 10; i++) 
    { 
     read_employee(&test_array2[i]); 
    } 
    printf("-- Test Array 1 --\n"); 
    for (int i = 0; i < 5; ++i) 
    { 
     print_employee(&test_array1[i]); 
    } 
    //printf("Total:"); 
    //gets(employee_total_salary(test_array1, 5)); 
    printf("-- Test Array 2 --\n"); 
    for (int i = 0; i < 10; ++i) 
    { 
     print_employee(&test_array2[i]); 
    } 
    return 0; 
    //printf("Total:"); 
    //gets(employee_total_salary(test_array2, 10)); 
    //employeee_index_search(); 
} 

我收到以下錯誤:

employee.c:13:21: warning: format specifies type 'char *' but the argument has 
     type 'char (*)[20]' [-Wformat] 
     scanf("%s", &e[i].name); 
       ~~ ^~~~~~~~~~ 
employee.c:53:19: warning: comparison between pointer and integer 
     ('int' and 'int *') 
       if (e[i].emp_id == id) 
        ~~~~~~~~~~~^~~ 
employee.c:74:32: warning: too many arguments in call to 'read_employee' 
       read_employee(&test_array1[i]); 
       ~~~~~~~~~~~~~    ^
employee.c:79:32: warning: too many arguments in call to 'read_employee' 
       read_employee(&test_array2[i]); 
       ~~~~~~~~~~~~~    ^
employee.c:84:33: warning: too many arguments in call to 'print_employee' 
       print_employee(&test_array1[i]); 
       ~~~~~~~~~~~~~~    ^
employee.c:91:33: warning: too many arguments in call to 'print_employee' 
       print_employee(&test_array2[i]); 
       ~~~~~~~~~~~~~~    ^
employee.c:7:20: warning: tentative array definition assumed to have one element 
}; struct employee e[]; 

會有人能夠告訴我我哪裏出了問題?該方案還不會叫print_employee和打印陣列 (我評論一些吧,因爲我想嘗試至少1-2個第一次工作職能)

+0

'read'和'p'是指針類型!!!! –

+0

'print_employee()'沒有返回值。 –

+0

歡迎來到StackOverflow。請參加[旅遊]。我可以推薦找一個基本的教程,一個演示寫作功能的教程,你似乎錯過了一些關於它們語法的細節。 – Yunnosch

回答

0
scanf("%d", &read.emp_id); 

你應該改變

scanf("%d", &read[i].emp_id); 

當你通過read爲結構的陣列

你還缺少參數括號()mainemployee_total_salary