Oppure

Loading
21/12/08 22:37
bip
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
aaa
22/12/08 11:55
munkaka
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);
aaa
22/12/08 21:31
bip
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 22/12/08 22:04
aaa
22/12/08 21:59
mc
La fwrite è sbagliata:
fwrite(buffer, sizeof(char), dim, file);
aaa
22/12/08 22:10
bip
ok thx:k:
Ultima modifica effettuata da bip 22/12/08 22:52
aaa