我正在尝试创建结构“出生日期”,以及将为结构赋值的函数,我想知道是否可以这样做:
(PS。我经常收到错误“参数列表语法错误”,第2行和第23行。)
#include <stdio.h>
void input (dob_st *);
int main ()
{
typedef struct
{
int year;
int month;
int day;
}
dob_st;
dob_st date;
dob_st *p;
p=&date;
input (*p);
printf("%02i.",p->day);
printf("%02i.",p->month);
printf("%i.",p->year);
return 0;
}
void upis (dob_st *p)
{
printf ("Date of birth:\nDay?\n");
scanf ("%i",&(p->day));
printf ("Month?\n");
scanf ("%i",&(p->month));
printf ("Year?\n");
scanf ("%i",&(p->year));
}
答案 0 :(得分:12)
我认为你得到的是因为dob_st
的定义只对main
是本地的 - 它不是在这种方法之外定义的。 void input (dob_st *);
方法无法知道dob_st
是什么,后来称为upis
,而不是input
,这可能是另一个错误。
答案 1 :(得分:3)
有些事情:你应该在main函数之外和输入函数的原型之前声明你的结构。
你也应该传递一个指向dob_st结构的指针而不是结构本身:现在可能的代码为
dob_st date;
dob_st *p;
p=&date;
input (*p);
应该是
dob_st date;
input (&date);
,输出稍后会直接基于日期。
PD:upis功能是否是输入功能?
答案 2 :(得分:0)
您正在将函数名称从“输入”更改为“upis”。
您还需要在main()函数之外定义dob_st。
答案 3 :(得分:0)
p是指针,因此参数应为“input(p)”而不是“inuput(* p)”。使用* p来指示指针,在这种情况下不需要。
答案 4 :(得分:0)
在标准C中,您编写“struct dob_st * p”而不是简单地“dob_st * p”。 还要确保在第一次使用之前声明struct dob_st 。