Dunque, spero che qualcuno possa aiutarmi...
Dato un file del tipo:
4 6 -5 2 1
5 -3 2
.
.
.
-4 5 10 -3 2 0
Sono riuscito a normalizzare i valori in [-1;1], con questo semplice codice:
codice:
#include<stdlib.h>
#include<stdio.h>
#define max(x,y) ((x>y)?x:y)
#define min(x,y) ((x<y)?x:y)

int main( int argc, char * argv[] ) {
  int n=100000;
  int vett[n];
  FILE *fd,*fdout;
  int i, res, dimensioni_vettore;
  int min_value=100000;
  int max_value=-100000;
  double lower=-1.0,upper=1.0, value;
  
		/* apre il file */
  if ( argc != 3 ) {
		printf("Utilizzo: %s file1 outfile\n",argv[0]);
		return 1;
	}
        
	fd = fopen (argv[1], "r");
	if ( fd == NULL) {
		perror("Errore in apertura del file");
                exit(1);
	}
	
	fdout = fopen (argv[2], "a");

        for(i=0; i<n-1; i++){
        res=fscanf(fd, "%d", &vett[i]);
        if( res==EOF )
      	break;
        printf("valore esaminato:%d\n",vett[i]);
        min_value=min(vett[i],min_value);
	max_value=max(vett[i],max_value);
	dimensioni_vettore=i;
        
      	}

	
	printf("max=%d, min=%d\n",max_value,min_value);
		/* normalizzazione -1;1 */
	for(i=0; i<dimensioni_vettore+1; i++){
	if(vett[i] == min_value)
		value = lower;//-1
	else if(value == max_value)
		value = upper;//1
	else
		value = lower + (upper-lower) * 
			(value-min_value)/
			(max_value-min_value);

        fprintf(fdout, "%g ",value);}


		/* chiude il file */
		  fclose(fd);
  		fclose(fdout);

  return 0;
}
Il problema è che i valori normalizzati sono scritti uno di seguito all' altro senza rispettare il ritorno a capo quando una riga finisce... Questo perché leggo i valori come interi e li inserisco in un vettore di interi che con la funzione fscanf non tiene conto del fine riga e inizio nuova riga...

Come posso modificare il tutto in modo da scrivere i valori riga per riga, invece che tutti in fila???