static void realocar_buffer_view(int necessario) { if (view.conteudo == NULL) { int tam = necessario + 1024; view.conteudo = malloc(tam); if (view.conteudo == NULL) { debug("Sem memória para alocar buffer da view.\r\n"); } debug("Alocado %d bytes em %p para o buffer.\n", tam, view.conteudo); view.capacidade = tam; } else { int novo = view.capacidade + necessario + 1024; if (realocar(&view.conteudo, view.capacidade, novo) == 0) { debug("Erro ao realocar buffer de emissão!\r\n"); } view.capacidade = novo; } }
lista *cadastraCategoria(){ int contador = 1; int opcao; do{ lista *cad = (lista*) calloc(contador, sizeof(lista)); if(!cad){ printf("Memoria indisponivel!! "); return 0; } printf(" --- CADASTRO DE CATEGORIA --- "); printf("\nID: "); scanf("%d", &cad->id); printf("\nNOME: "); scanf("%s", &cad->nome); printf("\n\nDeseja cadastrar produtos nessa categoria? (S/N)"); char c; scanf("%s", &c); if(c == 'S'){ printf("Quantos produtos gostaria de cadastrar? "); int x=0; printf("Digite a quantidade de produtos que deseja cadastrar: "); scanf("%d", &x); cad->listaProduto = totalProduto(x); cadastroProduto(x, cad->listaProduto); } printf("\n\n Deseja cadastrar mais alguma categoria? (0 = NAO)"); scanf("%d", &opcao); if(opcao != 0){ contador++; realocar(cad, contador); } }while(opcao != 0); return 0; }