Ciao ragazzi,
sto creando un programma che mi scrive su di un file una stringa che rappresenta una insert su un DB, ed ho i campi di un impiegato.

Ho usato la funzione srand() e rand() per i numeri casuali. Sembra funzionare bene per tutte le variabili eccetto per quelle rep ed uff.

Dal codice si capisce tutto..per ogni variabile genero i numeri casuali e poi nel caso un impiegato ha un ufficio (f==1) allora genero pure un ufficio casuale.

codice:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main () {
	
	FILE *pf;
	
	srand((unsigned)time(NULL));
	
	int i;
.
.
.
    //la matricola è l'intero "i" che si incrementa
.
.
.
	int a, m, g;		//data_nascita
	int anno; 			//anno_assunzione
	int stip;		  //stipendio
		
.
.	
	int uff; //numero dell'ufficio
	int rep; //numero reparto
	
    int f=0; //intero per scegliere a caso se avrò un ufficio o meno
    
	pf = fopen ("dati.txt", "w");
	
	if (pf) {
		for (i=1; i<20; i++) { 
            
            
			anno=rand()%40 + 1970;
			stip=rand()%750 + 850;
			a=rand()%41 + 1950;
			m=rand()%12 + 1;
			g=rand()%31 + 1;
			rep=rand()%11 + 1;    //scelgo un reparto da 1 a 10 casuale
						
			f=rand()%3 + 1;    //scegli se avrò un ufficio			
			
            if (f==1) {			// dipendente con ufficio
			   uff=rand()%11 + 1; 
		fprintf(pf,"%s%d%s%s%d%s%s%d%s%d%s%d%s%d%s%d%s%d%s%d%s%s%d%s\n", &s,i,&s2,&nome,i,&s2,&cognome,i,&s2,a,&separatore,m,&separatore,g,&s2,anno,&s2,stip,&s2,&uff,&s2,reparto,&rep,&s3);
			}
			else {			// dipendente senza ufficio
		fprintf(pf,"%s%d%s%s%d%s%s%d%s%d%s%d%s%d%s%d%s%d%s%s%s%s%d%s\n", &s,i,&s2,&nome,i,&s2,&cognome,i,&s2,a,&separatore,m,&separatore,g,&s2,anno,&s2,stip,&s2,&vuoto,&s2,reparto,&rep,&s3);
			}
		}
		
	  fprintf(pf,"%d",&rep);
		
        fclose (pf);
	}

	else printf("\nnon sei entrato.\n");
}
Come posso risolvere questa stranissima cosa??

Grazie