使用C

时间:2015-12-31 12:04:21

标签: c structure

我的嵌套结构程序正在发送错误。

这里我使用两种结构。

#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’

4 个答案:

答案 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中,您已声明成员minsec,缩写形式为minutesecond

但是,在以下代码中,您使用的是未缩写的表单minutesecond;这是你的编译器抱怨的。为方便起见,我们在下面的代码中找出了错误:

//            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。