I'm not the best person to answer, but I'm learning from it.
Below is a step-by-step example of what you were testing at repl.it
First we create the struct
here the identifier is s_products
struct s_produtos
{
int codigo;
char nome[20];
};
We define two variables of type int
// Recebera o valor informado pelo usuário
int qnt = 0;
// A cada loop guardara a posição no qual sera adicionado
// o produto
int posicao = 0;
Read the keyboard input and store the value entered in% with%
printf("Quantas produtos deseja adicionar?:");
scanf(" %d", &qnt);
We create the variable qnt
of type protudos
and set its size with the value of s_produtos
struct s_produtos produtos[qnt];
We loop and the user is asked to enter the data.
for(posicao; posicao < qnt; posicao++) {
printf("\n");
printf("Informe o código:");
scanf("%d", &produtos[posicao].codigo);
flush_in();// Limpa o teclado
printf("Informe o nome:");
// Usei gets pois scanf para no espaço e não pega a linha toda, ex:
// Leite em Pó
// Só retorna: Leite
gets(produtos[posicao].nome);
}
The qnt
v function found in the SOpt > because flush_in
was not working.
void flush_in() {
int ch;
do {
ch = fgetc(stdin)
} while (ch != EOF && ch != '\n');
}
Below we display the records on the screen
// Armazena o tamanho total do vetor
int total = sizeof(produtos)/sizeof(produtos[0]);
printf("\n\n");
printf("+--------- PRODUTOS ---------+\n");
for(int i = 0; i < total; i++) {
printf("%d - %s\n", produtos[i].codigo, produtos[i].nome);
}
printf("+----------------------------+\n");
You can see it working at repl.it .
Reference