2017-02-20 21 views
0

Я хочу, чтобы преобразовать строку в переменную struct.String to Struct переменные в C, без указателя, define

экс)

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 
} 

Я хочу эту программу. Но я не могу использовать define и указатель. Это означает, что я не пользуюсь операторами * и #.

Как это сделать?

+3

Ca вы быть простым и ясным, например, что вы действительно хотите достичь –

+0

'struct DAT dat_array [2]; Main_data = dat_array [num-1]; ' – kaylum

+0

' if (num == 1) Main_data = DAT1; else Main_Data = DAT2; ' –

ответ

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 может добавить больше. но я не знаю, как он растет. С этим условием, как это сделать? ... –

 Смежные вопросы

  • Нет связанных вопросов^_^