PDA

Visualizza la versione completa : fscanf


roldo
01-03-2012, 10:13
il primo codice mi ha scritto correttamente i 4 record della struct guida.
Vado poi a leggerli col secondo programmino e quando li stampo con la
printf ho questo output >>>

-1076455928
0.00
[Press Enter to close window]

Cosa canno ?
Grazie.




#include <stdio.h>

typedef struct libro
{
char titolo[100];
char autore[50];
int anno_pubblicazione;
float prezzo;
} t_libro;

int main() {

t_libro guida = {"Guida al C", "Fabrizio Ciacchi", 2003, 45.2};
FILE *stream = fopen("miof.txt","w");
fprintf(stream, "%s\n" "%s\n" "%d\n" "%2.2f\n",
guida.titolo,guida.autore,guida.anno_pubblicazione ,guida.prezzo);

fflush(stream);
fclose(stream);
}







#include <stdio.h>

typedef struct libro
{
char titolo[100];
char autore[50];
int anno_pubblicazione;
float prezzo;
} t_libro;


int main()
{

t_libro guida ;

FILE *stream = fopen("miof.txt","r");

fprintf(stream, "%s\n" "%s\n" "%d\n" "%2.2f\n", guida.titolo,guida.autore,guida.anno_pubblicazione ,guida.prezzo);

fprintf(stream, "%s\n" "%s\n" "%d\n" "%2.2f\n", guida.titolo,guida.autore,guida.anno_pubblicazione ,guida.prezzo);

printf("%s\n" "%s\n" "%d\n" "%2.2f\n", guida.titolo,guida.autore,guida.anno_pubblicazione ,guida.prezzo) ;


fflush(stream);
fclose(stream);
}

oregon
01-03-2012, 10:30
Ma dove sta la fscanf ???

roldo
01-03-2012, 10:42
Originariamente inviato da oregon
Ma dove sta la fscanf ???

!! Mi era rimasta nella penna!
Adesso l 'ho sistemata (penso..) ,il codice č sotto ma la
printf da >>>

Guidaal-10808622480.00
[Press Enter to close window]











#include <stdio.h>

typedef struct libro
{
char titolo[100];
char autore[50];
int anno_pubblicazione;
float prezzo;
} t_libro;

int main()
{
t_libro guida ;


FILE *stream = fopen("miof.txt","r");


fscanf(stream, "%s\n" "%s\n" "%d\n" "%2.2f\n", guida.titolo,guida.autore,guida.anno_pubblicazione ,guida.prezzo);


printf("%s" "%s" "%d" "%2.2f\n", guida.titolo,guida.autore,guida.anno_pubblicazione ,guida.prezzo) ;


fflush(stream);
fclose(stream);
}

oregon
01-03-2012, 10:52
1) Dato che le stringhe sono fatte da pių parole, usa la fgets e non la fscanf

2) Per la fscanf si passa il "puntatore" al dato ... con il &



fgets(guida.titolo, 100, stream);
fgets(guida.autore, 50, stream);
fscanf(stream, "%d\n%f\n", &guida.anno_pubblicazione, &guida.prezzo);

printf("%s%s%d\n%2.2f\n", guida.titolo,guida.autore,guida.anno_pubblicazione ,guida.prezzo) ;



P.S. Fai attenzione al titolo e al regolamento .... non usi da poco nel forum ...

roldo
01-03-2012, 10:58
Originariamente inviato da oregon
1) Dato che le stringhe sono fatte da pių parole, usa la fgets e non la fscanf

2) Per la fscanf si passa il "puntatore" al dato ... con il &



fgets(guida.titolo, 100, stream);
fgets(guida.autore, 50, stream);
fscanf(stream, "%d\n%f\n", &guida.anno_pubblicazione, &guida.prezzo);

printf("%s%s%d\n%2.2f\n", guida.titolo,guida.autore,guida.anno_pubblicazione ,guida.prezzo) ;



P.S. Fai attenzione al titolo e al regolamento .... non usi da poco nel forum ...

Perfetto.
Molte grazie

alka
01-03-2012, 12:27
Originariamente inviato da roldo
fscanf

Per favore, usa titoli in linea con il Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887), indicando il linguaggio e una descrizione significativa.

Loading