PDA

Visualizza la versione completa : [C] Passaggio di dati a una struct dopo fscanf


UltraBeginner
09-11-2006, 13:50
Ciao a tutti,

stavo esercitandomi sulle struct e sulle operazioni con i file, ma gia al primo tentativo il compilatore protesta...in particolare

#include <stdio.h>
#include <stdlib.h>

int main ()

{

struct prova
{
int acconto;
char nome[25];
float saldo;
};
FILE *ptr,*ptr2,*ptr3;
ptr=fopen("c:\\oldmast.dat","r");
ptr2=fopen("c:\\trans.dat","r");
ptr3=fopen("c:\\newmast.dat","w");

struct prova Data;

if(ptr==NULL)
perror("");
else
{
while(ptr!=NULL)
{
fscanf(ptr,"%d %s %f",Data.&acconto,Data.nome,Data.&saldo);
}
}
system("pause");
}

Questo codice non si compila, dice che errata la & davanti ad acconto e saldo....eppure quando io faccio una normale scanf la &bisogna metterla...come mai se faccio fscanf saltano fuori questi problemi?

il file oldmast contiene solo una riga per la cronaca ed e fatto cosi

10 pippo 12.5\nEOF

Grazie a tutti per le risp!

Saluti!

Samuele_70
09-11-2006, 14:13
Devi scrivere :


fscanf(ptr, "%d %s %f",&Data.acconto, Data.nome, &Data.saldo);

UltraBeginner
09-11-2006, 14:38
Originariamente inviato da Samuele_70
Devi scrivere :


fscanf(ptr, "%d %s %f",&Data.acconto, Data.nome, &Data.saldo);


Thanks, pero mi potresti spiegare il perche di cio? mi spiego: con scanf devi scrivere
Data.&acconto..perche mai con fscanf(che in linea di principio fa la stessa cosa) bisogna cambiare il codice in &Data.acconto? :confused: :confused:

UltraBeginner
09-11-2006, 14:41
Originariamente inviato da UltraBeginner
Thanks, pero mi potresti spiegare il perche di cio? mi spiego: con scanf devi scrivere
Data.&acconto..perche mai con fscanf(che in linea di principio fa la stessa cosa) bisogna cambiare il codice in &Data.acconto? :confused: :confused:

ehm ho parlato prima di compilare...non funziona neanke con fscanf(ptr, "%d %s %f",&Data.acconto, Data.nome, &Data.saldo);

ma possibile che debba prendere i dati singolarmente in tre variabili diverse per poi copiarle nella struct?

UltraBeginner
09-11-2006, 15:21
Originariamente inviato da UltraBeginner
ehm ho parlato prima di compilare...non funziona neanke con fscanf(ptr, "%d %s %f",&Data.acconto, Data.nome, &Data.saldo);

ma possibile che debba prendere i dati singolarmente in tre variabili diverse per poi copiarle nella struct?

ergo funziona :fagiano: :fagiano: :fagiano: -.-'

devil89
09-11-2006, 16:16
Originariamente inviato da UltraBeginner
ehm ho parlato prima di compilare...non funziona neanke con fscanf(ptr, "%d %s %f",&Data.acconto, Data.nome, &Data.saldo);

ma possibile che debba prendere i dati singolarmente in tre variabili diverse per poi copiarle nella struct?

La struttura composta da 3 campi (che sono le 3 variabili) e quindi logico che i valori li inserisce nelle 3 variabili. Non c' bisogno successivamente di copiarle nella struct, perch i suoi campi sono stati gi inzializzati.

Inoltre la definizione della struttura, meglio farla diversamente.


struct prova
{
int acconto;
char nome[25];
float saldo;
} Data;

Loading