PDA

View Full Version : Help con fprintf in C


darie3
10-05-2007, 11:07
Ciao a tutti,
qualcuno mi saprerbbe dire perche'
la fprintf scrive su file partendo dall'inizio e non dalla
fine come mi sarei aspettato?
(avendo aperto il file in append)
es fprintf(...,a);
fprintf(...,b);
nel file trovo
b a :muro:
grazie

Dario.

RaouL_BennetH
10-05-2007, 11:38
strano, io il file in append lo apro prima con fopen:



FILE *FP;
char *filename = "mio_file";

fp = fopen(filename, "a");

fprintf(fp, "........", nuovo_input, una_stringa);

recoil
10-05-2007, 15:00
magari posta un po' pił di codice
nel dubbio puoi provare a mettere fflush(...) tra una fprintf e l'altra e vedere se cambia qualcosa

darie3
11-05-2007, 09:03
Ecco un po' piu' di codice, per quanto riguarda la fflush il buffer dovrebbe essere vuoto perche' comunque stampa un carattere per volta.

FILE *fp;
FILE *out;
out=fopen("output.txt","a");


if(argc<2){
printf("inserisci il file iniziale \n");
return;
}
if((fp=fopen(*++argv,"r"))==NULL){
printf("non posso aprire il file %s \n",*argv);
return;
}
else
{
fscanf(fp,"%f",&x_min);
fscanf(fp,"%f",&y_min); //prende la dimensione del rettangolo

fprintf(out,"%.1f\n",x_min);
fprintf(out,"%.1f\n",y_min);
close(out);

close(fp);

Grazie per le risposte.

osa
11-05-2007, 10:25
Rifacendomi al tuo primo esempio hai detto che eseguendo
fprintf(f,"a\n");
fprintf(f,"b\n");
nel file viene scritto b e poi a, io pensp che l'esecuzione viene invertita, poiche se fosse stato scritto prima a, i casi sono due o "b" viene scritto sotto ad "a" oppure "a" viene sovrascritto da "b". Prova a mettere, come gią ti hanno suggerito, una fflush(..) tra le due fprintf per forzare la scrittura.

darie3
11-05-2007, 11:39
Si avevate ragione con la fflush() funziona bene :asd:

Grazie mille a tutti!!!!