динамическое значение для массива структуры? - PullRequest
0 голосов
/ 05 мая 2011
typedef struct What_if

{

    char price[2];
} what_if ;

 what_if  *what_if_var;

int main(int argc,int argv[])

{
 int m= argv[1];

what_if_var[m]='\0'; 

format_input_records();

getch();

return 0;

}

int format_input_records()

{

        strcpy(what_if_var[0].price,"sss") ;

        printf("\ntrans_Indicator     ==== : : %s",what_if_var[0].price);

return 0;

} 

здесь мне нужно динамическое значение для размера массива структуры? Как я могу достичь этого PLZ, помогите мне?

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Во-первых, у вас проблема в том, что я не думаю, что вы понимаете, что такое указатель:

what_if  *what_if_var;
...
what_if_var[m]='\0'; 

Вы создали указатель на структуру What_if, никогда ничего не выделяете, затем попытаетесь использовать его (и как их массив)

У вас также нет правильной подписи для main()

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

Как отмечено прямым комментарием к вашему вопросу, это указывает на то, что вы действительно не понимаете основ языка, и вводная книга в порядке.

При этом вам нужен массив ваших структур, размер которых передается через argv (после преобразования его из char * в int), и внутри структуры вам нужно иметь char * указатель. Для каждой вещи, которую вы хотите сохранить, вам нужно будет malloc() или использовать strdup(), а затем назначить ее указателю в вашей структуре.

0 голосов
/ 05 мая 2011

Вам необходимо выделить what_if_var с помощью вызова malloc(), прежде чем вы сможете назначить его. Я бы также посоветовал вам избегать использования глобальной переменной. Вместо этого сделайте what_if_var local.

0 голосов
/ 05 мая 2011

Вы можете определить:

typedef struct What_if


     char *price;
} what_if;

в вашей структуре. Инициализируйте его, когда вы знаете точный размер символов для хранения:

struct what_if w;
w.price = malloc (sizeof(char) * NEEDED_CHAR);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...