0
I would like to dynamically allocate memory without informing the amount of elements that a vector would have.
#include <stdio.h>
#include <stdlib.h>
int cardinalidade(char *conjunto)
{
int contador = 0, indice = 0;
while (1)
{
if (conjunto[indice] == ' ') // Se o elemento analisado for ' ' entao este foi o ultimo elemento.
{
break;
}
}
indice++;
contador++; // Conta o numero de elementos no vetor.
return contador;
}
char *criaConjunto()
{
char flag = '!', *conjunto;
int indice = 0;
while (flag != '@')
{
printf("ELEMENTO %i: ", indice + 1);
scanf("%c", &flag); // Armazeno o valor lido em uma variavel temporária.
indice++; // Foi lido mais um elemento.
conjunto = (char *) malloc (sizeof(char) * indice); // Aloco um vetor de n posições(depende do numero de elementos preenchidos)
conjunto[indice] = flag; // Coloco o valor lido anteriormente no conjunto.
}
conjunto[indice + 1] = ' '; // Ultimo elemento será o elemento indicando o fim do conjunto.
return conjunto; // Retornando o endereço do primeiro elemento do conjunto
}
int main()
{
char *A = criaConjunto();
printf("|A| = %i", cardinalidade(A));
return 0;
}
The way is to use
realloc()
in place ofmalloc()
.– Lacobus