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