在C文件中访问struct

时间:2017-11-27 11:38:50

标签: c struct

刚刚启动C,使用头文件声明等。我正在尝试编写一个测试程序,该程序从结构中获取温度的名称和度数值,例如37开尔文,然后将其转换为所需的温度。 我在头文件中写了一些typedef,struct和enum声明,但现在我很难从主文件中访问它们。我收到的错误是"错误:请求会员&'30; lampotila'在某种结构或联合的东西中

我的头文件如下:

#ifndef asteet_h
#define asteet_h

typedef float Lampotila;
typedef char Asteikko[20];
struct Lampotila {
    Lampotila lampotila;
    Asteikko asteikko;

};



enum Asteikko{
Celsius = 1,
Fahrenheit = 1,
Kelvin = 1
};
float muunna(Lampotila,Asteikko);
#endif

我的主要操作如下:

#include <stdio.h>
#include <string.h>
#include "asteet.h"

int main(int argc,char *argv[]){

float muunna(Lampotila a, Asteikko b){
    if(a.asteikko == "Celsius" && b == "Fahrenheit"){
        return(a.lampotila*1.8+32);
    }
    else if(a.asteikkko == "Fahrenheit" && b == "Celsius"){
        return((a.lampotila-32)/1-8);
    }
    else if(a.asteikko == "Celsius" && b == "Kelvin"){
        return(a.lampotila + 273.15);
    }
    else if(a.asteikkko == "Kelvin" && b == "Celsius"){
        return(a.lampotila - 273.15);
    }
    return 0;
}
return 0;
}

我尝试使用以下测试数据运行它:

Lampotila a = {23.5, Celsius};
Lampotila b = {79.7, Fahrenheit};
Lampotila c = {285.8, Kelvin};
Asteikko kelvin = Kelvin;
printf("23.5 C on %.2f K\n", muunna(a, kelvin));
printf("79.7 F on %.2f C\n", muunna(b, Celsius));

1 个答案:

答案 0 :(得分:1)

纠正以下问题。

  1. 使用结构时,请指定struct key word,或者键入dede struct <structure name> 所以“float muunna(Lampotila a, Asteikko b){”行将是“float muunna(struct Lampotila a, Asteikko b){”。这将清除您的错误。

  2. else if(a.asteikkko == "Fahrenheit" && b == "Celsius"){错误,因为asteikkko在您的结构中只定义了2个k

  3. 您可以在main之外定义函数,并通过传递参数来调用函数。