【发布时间】:2017-05-25 06:31:17
【问题描述】:
所以我目前正在尝试学习 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 个工作功能)
【问题讨论】:
-
read和p是指针类型!!! -
print_employee()没有返回值。 -
欢迎来到 StackOverflow。请拨打tour。我可以推荐找一个基本的教程,一个演示编写函数的教程,你似乎错过了一些关于它们的语法的细节。
标签: c xcode mingw sublimetext3