Exemplo n.º 1
0
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;
}