ヘッダファイルの宣言などを使ってCを開始しました。私は37 Kelvinのような構造体から温度の名前と次数の値をとり、それを希望の温度に変換するテストプログラムを作成しようとしています。 ヘッダファイルにtypedef、struct、enum宣言を書きましたが、今はメインファイルからそれらにアクセスするのに苦労しています。私は取得していますエラーが「エラー:何かない構造体または共用体のメンバの要求 『lampotila』」です。Cファイルの構造体へのアクセス
#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));
あなたの関数はmainの中で宣言され、floatとstructのtypedefの名前は同じです。文字列を '=='で比較することもできません。 'strcmp'が必要です。あなた自身の好意で本を手に入れよう。このコードには多くの誤りがありますが、これはいくつかの章の後に整理してあります。 –
このコードは意味を持ちません。プログラミング時には、「推測する」ことはできません。実際には、あなたが書くすべての行が何をしているのかを理解する必要があります。 – Lundin