L' ho trasformata in una funzione per ottenere stringhe senza sapere la dimensione a priori,da stdin o da file:
L' intento è di usarla durante un mio programma,dove ad esempio faccio: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; }
La uso al posto di ogni funzione di lettura da input.codice:char *p; p=get_string(stdin,p); /*faccio quello che devo fare*/ free(p);
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?

Rispondi quotando