L' ho trasformata in una funzione per ottenere stringhe senza sapere la dimensione a priori,da stdin o da file:
codice:
char* get_string(FILE *fp,char*ptr)
{
ptr=(char*)malloc(sizeof(char));
int i=1;
char ci;
fflush(stdin);
while(ci!=10)
{
ci=fgetc(fp);
if(ci!=10)
ptr[i-1]=ci;
else
ptr[i-1]='\0';
ptr=(char*)realloc(ptr,(i+1)*sizeof(char));
i++;
}
fflush(stdin);
return ptr;
}
L' intento è di usarla durante un mio programma,dove ad esempio faccio:
codice:
char *p;
p=get_string(stdin,p);
/*faccio quello che devo fare*/
free(p);
La uso al posto di ogni funzione di lettura da input.
P.S.: ma se io sono sicuro che la memoria verrà allocata,per convenzione devo comunque verificare che non punti a NULL?
In genere me la realloca sempre,in che casi può fallire?