#define __STEP__ 10 int getInput(char **ppTest) { int length = 0; int input = 0; *ppTest = (char*)malloc(__STEP__+2); if (!(ppTest))))))))) return 0; while((input = fgetc(stdin)) != EOF) { printf("middle : %c", input); if ( (__STEP__-1)==(length%__STEP__)) { if (NULL==realloc((*ppTest), (length+1)/__STEP__+__STEP__+ 2)) { free(*ppTest);*ppTest=NULL; return 0; } } (*ppTest)[length] = (char)input; ++length; } (*ppTest)[length] = '\0'; printf("\n length : %i\n", length); return length; } int main (int argc, char *argv[]) { char *pText=NULL; int iText_Lg=0; if (0!=argc) argv[0]=argv[0]; iText_Lg=getInput(&pText); printf("\n res : %s\n", pText); if (pText) free(pText); return 0; }