Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - ciao ho problemi con nel scrivere il file txt
Forum - C/C++ - ciao ho problemi con nel scrivere il file txt

Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 23:37
Domenica, 21/12/2008
Il problema è il seguente:
scrivo in cin>>buffer ciao mondo nel file risulta scritto nel file solo ciao e il debug nn dice null

il codice è:

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

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

//creo la struttura di memoria

//menu scelta
void sceltamenu(){    
     cout<<"con 0 inserisci dati\n";        
     cout<<"con 1 leggi dati\n";        
     cout<<"con 2 salva dati\n";        
         cin>>c;
          }
          
//inserimento dati utente


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


//manipolazione file
int scriveintmp(){
    pFile = tmpfile();
    fwrite(&buffer , 1 , sizeof(buffer) , pFile );
    fclose(pFile);
     return 0;
      }
int scrivi(){
    cin>>buffer;
    int l=strlen(buffer);
    pFile=fopen("myfile.txt","wb");
    fwrite(&buffer,1,l,pFile);
    fclose (pFile);
        return 0;
         }
int leggidafile(){
    file=fopen("myfile.txt","r");
    while (fgets(buff,dim,file)){
     puts(buff);
     }
     return 0;
      }


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


:grr::ot::grr:hlplsche devo fare

PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 12:55
Lunedì, 22/12/2008
la funzione cin prende i caratteri finche non incontra uno spazio, quindi si ferma a ciao
per prendere tutta la riga devi usare getline
ma prima di questo comando devi pulire il buffer con fflush
devi sostituire cin>>buffer con:

fflush(stdin);
cin.getline(buffer,dim);

PM Quote
Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 22:31
Lunedì, 22/12/2008
nada ora non scriva + niente questo è il codice:

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

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

//creo la struttura di memoria

//menu scelta
void sceltamenu(){    
     cout<<"con 0 inserisci dati\n";        
     cout<<"con 1 leggi dati\n";        
     cout<<"con 2 salva dati\n";        
         cin>>c;
          }
          
//inserimento dati utente


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


//manipolazione file
int scriveintmp(){
    pFile = tmpfile();
    fwrite(&buffer , 1 , sizeof(buffer) , pFile );
    fclose(pFile);
     return 0;
      }
int scrivi(){
    int l=strlen(buffer);
    fflush(stdin);
    cin.getline(buffer,dim);
    pFile=fopen("myfile.txt","wb");
    fwrite(&buffer,1,l,pFile);
    fclose (pFile);
        return 0;
         }
int leggidafile(){
    file=fopen("myfile.txt","r");
    while (fgets(buff,dim,file)){
     puts(buff);
     }
     return 0;
      }


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


:grr::ot::alert::grr:

Ultima modifica effettuata da bip il 22/12/2008 alle 23:04
PM Quote
Avatar
mc (Normal User)
Rookie


Messaggi: 52
Iscritto: 04/12/2008

Segnala al moderatore
Postato alle 22:59
Lunedì, 22/12/2008
La fwrite è sbagliata:
Codice sorgente - presumibilmente C/C++

  1. fwrite(buffer, sizeof(char), dim, file);


PM Quote
Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 23:10
Lunedì, 22/12/2008
ok thx:k:

Ultima modifica effettuata da bip il 22/12/2008 alle 23:52
PM Quote