Citace Původně odeslal D_a_v_i_d
Eee, sorry, sem to blbe napsal, myslel jsem samozrejme strlen

Kazdopadne mi jeste nikdo nepotvrdil nebo nevyvratil moji puvodni domnenku, jde tedy naalokovat pamet presne pro retezec, ktery potrebuju? Nebo je to proste potreba delat "s dostatecnou rezervou" a modlit se?
no a co to udelat takhle:

Kód:
 // na zacatku vyalokujeme misto pro retezec o delce 2 znaky 
 // (dalo by se to myslim prepsat i tak aby nebylo treba alokovat nic...
 char *a = (char*) malloc( sizeof(char) * 2 );
 // pomocna promena pro delku retezce
 size_t i = 0;

 // nacitame po znacich dokud neni konecradku (nebo neco jineho)
 while ( ( a[i] = (char) getch() ) != '\n' ) {
   // a umele ukoncime retezec na pozici za nactenym znakem
   a[++i] = '\0';
   // vyalokujeme si vice pameti (o jeden char navic)
   a = (char*) realloc(a, sizeof(char) * (strlen(a) + 1) );
 }
 // retezec je nacteny v a... staci ho jen vypsat...
 printf( "%d\n%s\n", strlen(a), a );

 // konec prace s retezcem
 free(a);
na zacatku potrebujes jen 2-velikosti-charu a na konci.... pamet na cely tvuj ohromny retezec, da se to samozrejme prepsat i na jakykoliv jiny datovy typ... atd. akorat nevim jestli to pojede v klasickem C.