Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Passaggio di dati a una struct dopo fscanf

    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!

  2. #2
    Devi scrivere :
    codice:
    	fscanf(ptr, "%d %s %f",&Data.acconto, Data.nome, &Data.saldo);
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Originariamente inviato da Samuele_70
    Devi scrivere :
    codice:
    	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?

  4. #4
    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?
    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?

  5. #5
    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 -.-'

  6. #6
    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.
    codice:
        struct prova
        {
        int acconto;
        char nome[25];
        float saldo; 
        } Data;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.