Salve ragazzi, stò cercando di creare una funzione per inserire una stringa da input arbitrariamente lunga. Io per adesso ho la seguente function:

codice:
char *StringaArbitraria()
{
    int i=0;
    char *c,ci;
    c=(char*)malloc(sizeof(char));

    while(ci!=10) // mi fermo quando trovo un newline \n
    {
      ci=getchar(); // inserisco un singolo carattere
      c[i]=ci; // lo associo puntatore
      i++;
      c=(char*)realloc(c,sizeof(char)*(i+1));
    }
    c[i]='\0'; //inserisco terminatore '\0' 
    
    return c;
}
Però, il prof. ci ha detto che usare tante volte la realloc, è dispendioso e và modificata, come posso modificare questa function?