estrurura com alocação dinamica (linguagem C)

1 Comentario
Substitua o priemeiro * por < e o segundo por * nos includes.

#include *stdio.h*;

#include *stdlib.h*;

/*
Usei a biblioteca stdlib por que o realloc está implementado nela
*/

// criando um tipo de estrutura chamada produto
typedef struct
{
char nome[20];
float preco;
}produto;

main()
{
//criando uma variavel do tipo produto
produto *qq = NULL;
int count = 0;
int comand;
int tamanho;
int i;

printf("0 - fechar programa\n1 - adicionar produto\n2 - imprimir todos os produtos adicionados\n\n");

do
{
printf("Digite o comando:\n");
scanf("%d", &comand);
//switch para definir o comando a ser executado
switch (comand)
{
case 0:
break;

case 1:
count++;
//tamanho rebe o valor de count vezes sizeof fa estrutura criada
tamanho = count*sizeof(produto);
//alocando dinamicamente mais espaço para a variavel qq
qq = (produto*) realloc (qq, count*sizeof(produto));

//dá valores a nome e preco que estão dentro da estrutura qq
scanf("%s %f",&(qq+tamanho)->nome,&(qq+tamanho)->preco);
break;
case 2:
//imprime todos os valores da estrutura qq
for(i=1;i<=count;i++) { //tamanho rebe o valor de i vezes sizeof fa estrutura criada
tamanho = i*sizeof(produto);
//imprime valor a valor
printf("%s %.2f\n",(qq+tamanho)->nome,(qq+tamanho)->preco);
}
break;
default:
printf("\aComando invalido!\n");
}


}
while(comand !=0);

//desaloca o espaço reservado para qq
free(qq);
}

#Compartilhar: Facebook Twitter Google+ Linkedin Technorati Digg

Um comentário:

Colaboradores

Tecnologia do Blogger.

Twitter

Facebook: