pasando matriz de estructura como un parámetro de función

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; } 

Estoy enfrentando el error aquí, ¿puede alguien decirme cuál es el error que cometí aquí?

La asignación de argumentos de función entre los tipos ” struct {...}* ” y ” struct {...}(*)[100] ” no está permitida.

Esperando puntero a estructura o unión.

Una matriz es intrínsecamente un puntero a algún espacio de memoria donde se ha asignado la longitud de la matriz. Por lo tanto, simplemente debes hacer:

 process_input_records(what_if_var); 

sin &

El error está aquí:

 process_input_records(&what_if_var); ^ 

Está tomando la dirección de una matriz, que es equivalente a what_if** , mientras que la función solo toma what_if* .

 process_input_records(what_if_var); 

Tenga en cuenta que probablemente desee pasar el tamaño de la matriz como un segundo parámetro a process_input_records , para que la función sepa cuántos elementos hay en la matriz:

 process_input_records( what_if_var, sizeof what_if_var / sizeof *what_if_var );