The program should dynamically allocate the struct and pass it as a parameter.
#include <stdio.h>
#include <stdlib.h>
typedef struct cadastro_de_mercadoria{
int codigo;
int estoque;
} CADASTRO;
void printar(CADASTRO cadastruu, int N){
printf("\n\n---------RESULTADO DOS PEDIDOS DOS CLIENTES-------\n\n");
for(int l=0; l<N; l++){
printf("Código da mercadoria %d: %d \n",l+1,cadastruu[l].codigo);
printf("Quantidade da mercadoria no estoque: %d ", cadastruu[l].estoque);
printf("\n\n");
}
}
int main(){
CADASTRO *cadastro;
int N, k, codcli, estoquecli, escolha, encontrado=0;
k=0;
printf("Entre com o número de mercadorias: ");
scanf("%d", &N);
cadastro = (CADASTRO *)malloc(N * sizeof(CADASTRO));
if(cadastro == NULL){
printf("Muita memoria!\n");
return 1;
}
else{
//cadastro das mercadorias
for(int i=0; i<N; i++){
printf ("Entre com o código da mercadoria %d: ",i+1);
scanf ("%d%*c", &cadastro[i].codigo);
printf ("Entre com o estoque da mercadoria %d: ", i+1);
scanf ("%d%*c", &cadastro[i].estoque);
printf ("\n");
}
}
//consulta da mercadoria
printf ("----------PEDIDOS DOS CLIENTES----------\n\n");
while(1){
printf ("Entre com o código da mercadoria: ");
scanf ("%d%*c", &codcli);
encontrado=0;
for(int j=0; j<N; j++){
if(cadastro[j].codigo==codcli){
printf ("Entre com o estoque da mercadoria: ");
scanf ("%d", &estoquecli);
if(cadastro[j].estoque>=estoquecli){
cadastro[j].estoque = cadastro[j].estoque - estoquecli;
printf ("ESTOQUE ATUALIZADO\n");
}
else{
printf ("ESTOQUE INSUFICIENTE!\n");
}
k=1;
}
}
if(k==0){
printf ("MERCADORIA NÃO ENCONTRADA!\n");
}
k=0;
printf("Deseja enviar outra solicitacao? (Sim: 1/Não: 0):: ");
encontrado=0;
scanf("%d", &escolha);
if(escolha==0)
break;
}
printar(cadastro, N);
free(cadastro);
return 0;
}