2017-02-20 7 views
0

を定義します。文字列は、ポインタなしで、私は変数を構造体への文字列を変換する方法をしたい

EX)

struct DAT 
{ 
    int a,b; 
    char c,d; 
    float e,f; 
}DAT1,DAT2,Main_data; 

main() 
{ 
    Test_function(1) 
} 

Test_function(int num) 
{ 
    Main_data = DAT(num) // If num is 1, Main_data = DAT1 
} 

私はこのプログラムをしたいです。 しかし、私は定義とポインタを使用することはできません。 この平均は私が*#演算子を使用しないでください。

どうすればよいですか?

+3

Caはあなたが一例で、簡単かつ明確にするものあなたは本当に –

+0

'struct DAT dat_array [2]を達成したいと思います。 Main_data = dat_array [NUM-1]; '' – kaylum

+0

IF(NUM == 1)Main_data = DAT1。他Main_Data = DAT2;近代C(意味 'について、1990年から書かれたC')は、すべての機能のための明示的な戻り値の型持っている必要があることを ' –

答えて

1

あなたは、実行時に変数名と「計算」することはできません - あなたのプログラム内の名前は、実際にコンパイル時にのみ存在し、あなたのプログラムがコンパイルされると、彼らは利用できませんね。したがって、実行時に異なる変数の間で判断する場合は、値をテストしてプログラム内のすべての可能性を列挙する必要があります。何かのように:これは動作しますが配列とポインタが存在する理由

void Test_function(int num) 
{ 
    switch(num) { 
    case 1: 
     Main_data = DAT1; 
     break; 
    case 2: 
     Main_data = DAT2; 
     break; 
    default: 
     fprintf(stderr, "Invalid num %d for DAT\n", num); 
    } 
} 

、そのは冗長であるエラーが発生しやすく、 - 彼らはそれがはるかに容易になります:

struct DAT DAT[3], Main_data; 

void Test_function(int num) 
{ 
    Main_data = DAT[num]; // Undefined behavior if num is out of range! 
} 
+0

ありがとう!しかし、struct型の変数はもっと多くを加えることができます。しかし、私はそれがもっとどのように上昇するのか分かりません。この状態で、どうすればいいですか?... –

関連する問題