Salve ragazzi, vi scrivo perchè non riesco a risolvere un problema con un programma.
L' esercizio consiste nel restituire una stringa nella quale vengono salvati dei numeri letti in un file passato come parametro ad una funzione...
Il problema principale è che il file è composto da circa 50000 numeri, e il programma che io ho fatto si blocca dopo pochi numeri....ecco qui il mio TENTATIVO FALLITO:

codice:
char * funzione(FILE * f) {

  int c,i=0,var,clas,neg;   // Dichiaro le variabili che mi serviranno man mano

  char c1,c2,s[10];

  long int cont=0,x;

     fscanf(f,"%c",&c1);   // Prelevo le prime due righe del file
     fscanf(f,"%c",&c1);   // In questo fscanf prelevo il '\n' della prima riga
     fscanf(f,"%c %s %d %d",&c2,s,&var,&clas);

     char * str;           // Dichiaro la stringa

     FILE * p=f;           // Dichiaro questo puntatore che mi serve per salvare la posizione di "f"

     while(!feof(f)) {

        fscanf(f,"%d",&x);  cont++; // Conto i numeri presenti nel file (numero non preciso)

     }

     str=calloc(cont,sizeof(char));   // Alloco la memoria necessaria per contenere tutti questi numeri

     f=p;                      // Riparto dal punto salvato da 'p' nel file

     while(!feof(f)) {      // Scorro il file per salvare nella stringa i numeri che trovo

        fscanf(f,"%d",&x);

	str[i]=x;

        i++; }

     }

  return str;   // ritorno la stringa

  }

Il file è così composto:

codice:
c
p cnf 450 19084
1 22 3 4 54 6 7 8 9 10 11 62 13 14 15  0
16 17 8 19 2 21 62 213 24 25 26 27 28 29 30  0
31 42 33 34 230 36 37 358 39 40 423 42 43 44 45  0
etc etc etc!!!
Quando ritorno la stringa purtroppo di tutti numeri me li salva soltanto 15! E quindi non so più come fare...Vi ringrazio in anticipo per il vostro aiuto!
Un saluto a tutti!