codice:
#include <iostream>
#include <cstdlib>
using namespace std;
int main(void)
{
    const int blockSize=16; //allochiamo a blocchi di 16 byte
    char * stringa, * writePtr;
    int strCapacity=blockSize+1;
    stringa = (char *)malloc(strCapacity*sizeof(*stringa));
    writePtr = stringa;
    while(true)
    {
        cin.clear();
        cin.getline(writePtr, blockSize+1);
        if(!cin.fail())
            break;
        writePtr=stringa+strCapacity-1;
        strCapacity+=blockSize;
        stringa=(char *)realloc(stringa,strCapacity*sizeof(*stringa));
    }
    cout<<stringa<<endl;
    return 0;
}
.