[英]Passing an element of an array of structs in C
我试图传递我制作的20个“数据库”结构之一
这是我的函数“添加”的原型
void add(struct database test);
我想通过数据库结构,现在我将其称为“测试”
这是我的数据库结构
struct database
{
char ID[6];
char Duration[3];
};
main()
{
char menu;
struct database employee[20]; // I make 20 employee variables
int a = 0; /*A counter I use to edit certain structs
ie a=2 "employee[a]" = "employee[2]" */
然后,我像这样调用该函数:
add(employee[a]);
a++; /*Once it exits this I want it to go to the next employee
variable so I increment the counter */
实际功能如下所示:
void add(struct database test)
{
static int a = 0;
printf("\nPlease enter a 5 digit employee number: ");
scanf("%s", test[a].ID);
a++
}
在执行此操作时出现错误:
错误E2094 Assignment.c 64:函数add(database)中类型为'int'的参数的类型'database'中未实现'operator +'
它说错误在
scanf("%s", test[a].ID);
在此先感谢您提供的任何帮助,如果出现格式错误,我将致歉,仍在学习使用堆栈溢出功能,非常抱歉!
add(struct database test)
声明一个struct database
作为参数。 这不是一个数组,因此无法对其进行索引。
所以
test[a]
是无效的。
另外, int a
内部add()
是从不同int a
中所定义main()
在add()
内部,后者a
被前者a
隐藏。
另外^ 2,您还向add()
传递了main()
声明的数组元素的副本。 因此,当从add()
返回时,为在侧面add()
中进行test
所做的任何修改都会丢失。 它们在main()
的数组中不可见。
这是您需要做的以使其正确的操作:
void add(struct database* test)
{
printf("\nPlease enter a 5 digit employee number: ");
scanf("%s",test->ID);
}
int main()
{
...
int a;
struct database employee[20];
for (a=0; a<sizeof(employee)/sizeof(*employee); a++)
add(&employee[a]); // or add(employee+a);
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.