Il problema è che adesso ho già tutte le funzioni dell' agenda per leggere non in binario,mi sono reso conto che in binario è molto più comodo,infatti adesso me le studio così la prossima volta mi risparmio un bel pò di fatica![]()
Per adesso mi straconviene gestire un file txt,il problema era proprio che non davo il valore di ritorno,infatti adesso ho risolto facendo ritornare il puntatore già allocato.
Il chè è però ridondante,nel senso che io gli passo un puntatore e ricevo come ritorno lo stesso puntatore ma allocato,vorrei sapere se si può fare senza far ritornare il puntatore,così posso usare come valore di ritorno ad esempio il numero di strutture allocate.
Per adesso l' ho modificata così:
E mi ero dimenticato di dire che num_line è la funzione che legge il numero di righe del file,cur_line la funzione che dice in che riga mi trovo.codice:nota *nota_read(FILE*fp,nota *ptr) { char *p; int i,k=0; if(num_line(fp)==0) ptr=NULL; else ptr=(nota*)calloc((num_line(fp)/6),sizeof(nota)); while(cur_line(fp)<num_line(fp)) { for(i=0;i<4;i++) { p=get_string(fp,p); (ptr[k]).data[i]=atoi(p); free(p); } (ptr[k]).oggetto=get_string(fp,(ptr[k]).oggetto); (ptr[k]).testo=get_string(fp,(ptr[k]).testo); k++; } return ptr; }
Così è comodo da gestire,l' unica cosa è che so sicuramente che la prossima volta scriverò tutto in binario.
Il token di riconoscimento è newline.

Rispondi quotando