передача массива структуры в качестве параметра функции - PullRequest
1 голос
/ 27 апреля 2011
typedef struct What_if
{
    char   price                 [2];
} what_if ;

what_if  what_if_var[100];

int format_input_records();

int process_input_records(what_if *what_if_var);

int format_input_records()
{
    if (infile != NULL )
    {
        char mem_buf [500];

        while ( fgets ( mem_buf, sizeof mem_buf, infile ) != NULL ) 
        {
            item = strtok(mem_buf,delims);     
            strcpy(what_if_var[line_count].trans_Indicator,item) ;
            printf("\ntrans_Indicator     ==== : : %s",what_if_var[line_count].price);
            process_input_records(&what_if_var);
            line_count=line_count+1;
        }
    }
}

int process_input_records(what_if *what_if_var)
{
    printf("\nfund_price process_input_records    ==== : : %s",what_if_var[line_count]->price);
    return 0;
}

Здесь я сталкиваюсь с ошибкой. Может ли кто-нибудь сказать мне, в чем здесь ошибка?

Назначение аргументов функции между типами "struct {...}*" и "struct {...}(*)[100]"не допускается.

Ожидается указатель на структуру или объединение.

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Ошибка лежит здесь:

process_input_records(&what_if_var);
                      ^

Вы берете адрес массива, который эквивалентен what_if**, тогда как функция принимает только what_if*.

process_input_records(what_if_var);

Обратите внимание, что вы, вероятно, хотите передать размер массива в качестве второго параметра в process_input_records, поэтому функция знает, сколько элементов в массиве:

process_input_records( what_if_var, sizeof  what_if_var / sizeof *what_if_var );
2 голосов
/ 27 апреля 2011

Массив по сути уже является указателем на некоторое пространство памяти, где была выделена длина массива.Поэтому вы должны просто сделать:

process_input_records(what_if_var);

без &

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...