我的嵌套结构程序正在发送错误。
这里我使用两种结构。
#include <stdio.h>
void main()
{
struct time
{
int min;
int hour;
int sec;
};
struct t
{
int c;
struct time t1;
struct time t2;
}p;
scanf("%d", &p.c);
scanf("%d%d%d", &p.t1.minute, &p.t1.hour, &p.t1.second);
scanf("%d%d%d", &p.t2.minute, &p.t2.hour, &p.t2.second);
printf("%d%d%d", p.p1.min, p.p1.hour, p.p1.sec);
printf("%d%d%d", p.p2.min, p.p2.hour, p.p2.sec);
}
运行此代码后,我收到以下错误。
struct time’ has no member named ‘minute’
nested.c:17: error: ‘struct time’ has no member named ‘second’
nested.c:18: error: ‘struct time’ has no member named ‘minute’
nested.c:18: error: ‘struct time’ has no member named ‘second’
答案 0 :(得分:1)
#include <stdio.h>
void main()
{
struct time
{
int minute; // change here
int hour;
int second; // change here
};
struct t
{
int c;
struct time t1;
struct time t2;
}p;
scanf("%d",&p.c);
scanf("%d%d%d",&p.t1.minute,&p.t1.hour,&p.t1.second);
scanf("%d%d%d",&p.t2.minute,&p.t2.hour,&p.t2.second);
printf("%d%d%d",p.t1.minute,p.t1.hour,p.t1.second);
printf("%d%d%d",p.t2.minute,p.t2.hour,p.t2.second);
}
应该修复它 - 如果不存在某些东西,就找不到它;)
答案 1 :(得分:1)
错误非常清楚,所以我会饶有解释他们的意思。但是,如果您在阅读此答案后对错误的含义感到困惑,请随时在评论中提出问题,我会尝试解决。
在struct time
中,您已声明成员min
和sec
,缩写形式为minute
和second
。
但是,在以下代码中,您使用的是未缩写的表单minute
和second
;这是你的编译器抱怨的。为方便起见,我们在下面的代码中找出了错误:
// change minute to min vvvvvv
scanf("%d%d%d",&p.t1.minute,&p.t1.hour,&p.t1.second);
// ^^^^^^ change second to sec
scanf("%d%d%d",&p.t2.minute,&p.t2.hour,&p.t2.second); // Repeat the process for this line
我还强烈建议使用int main(void)
而不是void main()
,因为前者严格遵守标准而后者不是,尽管您的编译器可能会选择支持后者作为扩展。
检查scanf
的返回值也是一个好主意。对于您希望读取三个值的调用,成功时返回值应为3。如果它是2,那么你只能依赖前两个值;第三个是垃圾。如果它是EOF
,那么您的文件已达到文件结束或错误状态,您应该停止尝试从中读取,或rewind
/ fsetpos
/ { {1}} ...
答案 2 :(得分:0)
可能这段代码会帮助你
#include <stdio.h>
struct Employee
{
char ename[20];
int ssn;
float salary;
struct date
{
int date;
int month;
int year;
}doj;
}emp = {"amit",100,2000.50,{22,6,1990}};
int main(int argc, char *argv[])
{
printf("\nEmployee Name : %s",emp.ename);
printf("\nEmployee SSN : %d",emp.ssn);
printf("\nEmployee Salary : %f",emp.salary);
printf("\nEmployee DOJ : %d/%d/%d", \
emp.doj.date,emp.doj.month,emp.doj.year);
return 0;
}
答案 3 :(得分:0)
“time”结构中没有名为second和minute的变量。你已经分别命名为sec和min。