【发布时间】:2019-03-03 22:07:29
【问题描述】:
我正在尝试用 C 语言编写一个函数,该函数将结构数组(包含员工信息的结构)作为参数并打印每个结构的每个成员。出于某种原因,我的代码没有产生任何输出。谁能告诉我哪里出错了?谢谢。
这里是:
#include <stdio.h>
#include <stdlib.h>
typedef struct Employee
{
int number;
char name[20];
char department[15];
double salary;
}Employee;
void employeePrint(Employee arr[]);
main()
{
Employee e1 = {101,"John Smith\0","Accounting\0",54926.25};
Employee e2 = {102,"Jane Q. Public\0","Retail\0",54926.24};
Employee e3 = {103,"George Washington\0","Tech\0",70417.76};
Employee empArr[3] = {e1,e2,e3};
employeePrint(empArr);
}
void employeePrint(Employee arr[])
{
int i;
for(i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i)
{
printf("Number: %-4d\n",arr[i].number);
printf("Name: %-6s\n",arr[i].name);
printf("Department: %s\n",arr[i].department);
printf("Salary: $%-2.2lf",arr[i].salary);
printf("----------------");
}
}
【问题讨论】:
-
这肯定是许多其他问题的重复。它基本上是关于确定传递给函数的数组的大小,这不能用原始数组(指针)可靠地完成。您必须显式传递大小,并且可能单独传递(或使用定义包含大小的数组类型的结构类型)。
-
好吧,我搜索了它,但我不知道它是否不同,因为结构在一个数组中。另外,如果这个函数可能没有大小参数,我也没有。我搜索了大约一个小时才找到这个,但我找不到,所以我问了这个问题。每次我在这个网站上提问时都会发生这种情况,这真的让我很紧张。
-
别担心;找到重复项是一项艰巨的工作,即使对于那些已经工作了十年的人来说也是如此。我有很多常见的重复书签;我没有这个书签。我很快就找到了它,因为我对要使用的搜索词有一个精明的想法('
[c] size array function',并按投票排序,而不是相关性——两者密切相关,但不相同),但我确实必须进行搜索,这就是为什么在注意到这是重复项和找到实际重复项之间有 17 个小时的原因。 (还有一些睡眠,我相信这叫做“生命”。) -
请注意,如果您愿意,您可以接受其中一个答案,这将有利于回答的人和您;你会得到 2 点代表和回答者 15。