Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - son sempre  io ora ho un problema con fwrite
Forum - C/C++ - son sempre io ora ho un problema con fwrite

Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 22:58
Venerdì, 02/01/2009
codice:

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<string>
#define dim 1000
using namespace std;

int c,s=0,z=0;
char buff[dim], buffer[dim], o;  
FILE *pFile, *file;

//creo la struttura di memoria
struct data{
       int giorno;
       char mese[20];
       int anno;
       };
      
struct utente{
       char codicefiscale[16];
       int matricola;
       char nome[20];
       char via[20];
       char localita[25];
       char provincia[2];
       struct data nato;
       } user[20];
    
    
//menu scelta
void sceltamenu(){    
     cout<<"con 0 inserisci dati in memoria\n";        
     cout<<"con 1 leggi dati in memeria \n";        
     cout<<"con 2 salva dati \n";        
     cout<<"con 3 leggi dati salvati \n";
         cin>>c;
          }
          
//inserimento dati utente


//menu di stampa
int stampamenu(){
switch (c) {
   case 0:cout<<"\ndati inseriti\n";
   break;
   case 1:cout<<"\ndati letti dalla memoria\n";
   break;
   case 2:cout<<"\nsalvati\n";
   break;
   case 3:cout<<"\nsalvati\n";
   break;
   default:cout<<"\nerror\n";
   break;
   }
   return c;
}


//manipolazione file
int scriveintmp(){
     cin.getline(buffer,dim);
     pFile = tmpfile();
     fwrite(buffer, sizeof(char) ,dim , pFile);
     fclose(pFile);
     fflush(stdin);
     return 0;
      }
int leggitmp(){
     file=fopen("myfile.txt","r");
     while (fgets(buff,dim,file)){
     puts(buff);
     }
     return 0;
    }
int scrivi(){
     pFile=fopen("myfile.txt","wb");
     for(int x=0;x<=dim;x++){
          cin>>user[x].nome;
          cin>>user[x].via;
          cin>>user[x].localita;
          cin>>user[x].provincia;
          cin>>user[x].nato.giorno;
          cin>>user[x].nato.mese;
          cin>>user[x].nato.anno;
          cin>>user[x].codicefiscale;
          };
          
     for(int y=0;y<=dim;y++){
          fwrite("\nnome\n"user[y].nome, sizeof(char), dim, pFile);
          fwrite("\nvia\n"user[y].via, sizeof(char), dim, pFile);
          fwrite("\nlocalità\n"user[y].localita, sizeof(char), dim, pFile);
          fwrite("\nsigla provincia\n"user[y].provincia, sizeof(char), dim, pFile);
          fwrite("\ngiorno\n"user[y].nato.giorno, sizeof(char), dim, pFile);
          fwrite("\nmese\n"user[y].nato.mese, sizeof(char), dim, pFile);    
          fwrite("\nanno\n"user[y].nato.anno, sizeof(char), dim, pFile);
          fwrite("\ncodice fiscale\n"user[y].codicefiscale, sizeof(char), dim, pFile);
          };
     fclose (pFile);
     fflush(stdin);
        return 0;
         }
int leggidafile(){
     file=fopen("myfile.txt","r");
     while (fgets(buff,dim,file)){
     puts(buff);
     }
     return 0;
      }


main(){
       sceltamenu();
      
     switch(c){
           case 0:scriveintmp(),stampamenu();
           break;  
           case 1:leggitmp(),stampamenu();
           break;
           case 2:scrivi(),stampamenu();
           break;  
           case 3:leggidafile(),stampamenu();
           break;
           default:"qualcosa non torna";
           break;
              }
              
  system("pause");
       }

che il problema è quì:

for(int y=0;y<=dim;y++){
          fwrite("\nnome\n"user[y].nome, sizeof(char), dim, pFile);
          fwrite("\nvia\n"user[y].via, sizeof(char), dim, pFile);
          fwrite("\nlocalità\n"user[y].localita, sizeof(char), dim, pFile);
          fwrite("\nsigla provincia\n"user[y].provincia, sizeof(char), dim, pFile);
          fwrite("\ngiorno\n"user[y].nato.giorno, sizeof(char), dim, pFile);
          fwrite("\nmese\n"user[y].nato.mese, sizeof(char), dim, pFile);    
          fwrite("\nanno\n"user[y].nato.anno, sizeof(char), dim, pFile);
          fwrite("\ncodice fiscale\n"user[y].codicefiscale, sizeof(char), dim, pFile);
          };

il compilatore mi scrive x ogni funzione fwrite uesto msg di errore :
expected `)' before "user"

che posso fare?
hlplsme:ot::alert::ot:

Ultima modifica effettuata da bip il 02/01/2009 alle 23:12


%0edf
PM Quote
Avatar
iGuLy (Ex-Member)
Pro


Messaggi: 66
Iscritto: 17/05/2007

Segnala al moderatore
Postato alle 0:18
Sabato, 03/01/2009
Non ho letto tutto, comunque mi sembra di capire che hai dimenticato più volte delle ',' quando richiami la funzione fwrite.

PM Quote
Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 23:13
Sabato, 03/01/2009
srcitto coi non capisco nulla mi puoi correggere come secondo tè è giusto scrivere un fwrite cioè scrivendomi la funzione fwrite come scriveresti tu?:alert::alert:
thx


%0edf
PM Quote
Avatar
iGuLy (Ex-Member)
Pro


Messaggi: 66
Iscritto: 17/05/2007

Segnala al moderatore
Postato alle 14:10
Domenica, 04/01/2009
Per esempio qui:
Codice sorgente - presumibilmente C/C++

  1. fwrite("\nnome\n"user[y].nome, sizeof(char), dim, pFile);


manca una virgola e poi se vuoi stampare user[y].nome dovresti mettere:
Codice sorgente - presumibilmente C/C++

  1. // dim teoriacamente dovrebbe essere la quantità di caratteri da scrivere
  2. fwrite(user[y].nome, sizeof(char), dim, pFile);


Dai uno sguardo anche qui che c'è una spiegazione della fwrite http://digilander.libero.it/uzappi/C/librerie/funzioni/fwr ...

Ultima modifica effettuata da iGuLy il 04/01/2009 alle 14:11
PM Quote