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++ - Scrittura su file..
Forum - C/C++ - Scrittura su file..

Avatar
Chris_C++ (Normal User)
Newbie


Messaggi: 5
Iscritto: 30/08/2009

Segnala al moderatore
Postato alle 16:26
Domenica, 30/08/2009
Nuovo quesito per voi sui file..
Adesso devo inserire una frase in un programma, vorrei che la frase venisse scritta per intero (infatti adesso strive solo la prima parola..) e che, se riapro il programma, ed inserisco un altro testo, quest'ultimo, venga immesso di seguito al precedente, invece di cancellarlo come fa ora.. Questo è quello a cui sono arrivato..

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const char indirizzo[55]="C:\\Documents and Settings\\Chris\\Desktop\\Ciao.txt";
int main()
{
char risp;
string testo;
ofstream ciao;
ciao.open(indirizzo, ios::out);
do{
   cout<<"Inserisci il testo"<<endl;
   cin>>testo;
   ciao<<testo<<endl;
   cout<<"Vuoi continuare? S/N"<<endl;
   cin>>risp;
}while((risp=='S')||(risp=='s'));
ciao.close();
system("pause");      
}


Balla coi lupi...
PM Quote
Avatar
steve__92 (Normal User)
Rookie


Messaggi: 22
Iscritto: 14/07/2009

Segnala al moderatore
Postato alle 16:47
Domenica, 30/08/2009
Testo quotato

Postato originariamente da Chris_C++:

Nuovo quesito per voi sui file..
Adesso devo inserire una frase in un programma, vorrei che la frase venisse scritta per intero (infatti adesso strive solo la prima parola..) e che, se riapro il programma, ed inserisco un altro testo, quest'ultimo, venga immesso di seguito al precedente, invece di cancellarlo come fa ora.. Questo è quello a cui sono arrivato..

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const char indirizzo[55]="C:\\Documents and Settings\\Chris\\Desktop\\Ciao.txt";
int main()
{
char risp;
string testo;
ofstream ciao;
ciao.open(indirizzo, ios::out);
do{
   cout<<"Inserisci il testo"<<endl;
   cin>>testo;
   ciao<<testo<<endl;
   cout<<"Vuoi continuare? S/N"<<endl;
   cin>>risp;
}while((risp=='S')||(risp=='s'));
ciao.close();
system("pause");      
}



se vuoi scrivere una frase non devi usare cout (che si ferma alla prima parola) ma devi usare cin.getline(array, int lunghezza); http://www.cplusplus.com/reference/iostream/istream/getline/
nel tuo caso potrebbe andare
cin.getline(testo, 100);
però devi sostituire string testo; con
char testo[100];


per non cancellare quello che c'è già scritto ti rimando a questo http://www.pierotofy.it/pages/guide_tutorials/CPlusPlus/Of ...


Ultima modifica effettuata da steve__92 il 30/08/2009 alle 17:03
PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 18:29
Domenica, 30/08/2009
Testo quotato

Postato originariamente da steve__92:
se vuoi scrivere una frase non devi usare cout (che si ferma alla prima parola) ma devi usare cin.getline(array, int lunghezza);



Casomai cin...


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM Quote
Avatar
Chris_C++ (Normal User)
Newbie


Messaggi: 5
Iscritto: 30/08/2009

Segnala al moderatore
Postato alle 21:30
Domenica, 30/08/2009
Grazie dell'aiuto..
Ma adesso ho un altro problema.. Dopo che inserisco il primo primo testo il programma mi chide: Vuoi continuare? io dico sì e invece di chiedermi di inserire il nuovo testo, mi chiede vuoi continuare?

Qui c'è il programma corretto:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const char indirizzo[55]="C:\\Documents and Settings\\Chris\\Desktop\\Ciao.txt";
int main()
{
char risp;
char testo[50];
ofstream ciao;
ciao.open(indirizzo, ios::app);
do{
   cout<<"Inserisci il testo"<<endl;
   cin.getline (testo,50);
   ciao<<testo<<endl;
   cout<<"Vuoi continuare? S/N"<<endl;
   cin>>risp;
}while((risp=='S')||(risp=='s'));
ciao.close();
system("pause");      
}


Balla coi lupi...
PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 21:42
Domenica, 30/08/2009
Testo quotato

Postato originariamente da Chris_C++:

Grazie dell'aiuto..
Ma adesso ho un altro problema.. Dopo che inserisco il primo primo testo il programma mi chide: Vuoi continuare? io dico sì e invece di chiedermi di inserire il nuovo testo, mi chiede vuoi continuare?

Qui c'è il programma corretto:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const char indirizzo[55]="C:\\Documents and Settings\\Chris\\Desktop\\Ciao.txt";
int main()
{
char risp;
char testo[50];
ofstream ciao;
ciao.open(indirizzo, ios::app);
do{
   cout<<"Inserisci il testo"<<endl;
   cin.getline (testo,50);
   ciao<<testo<<endl;
   cout<<"Vuoi continuare? S/N"<<endl;
   cin>>risp;
}while((risp=='S')||(risp=='s'));
ciao.close();
system("pause");      
}



metti
cin.ignore();
prima di
}while((risp=='S')||(risp=='s'));


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM Quote
Avatar
Chris_C++ (Normal User)
Newbie


Messaggi: 5
Iscritto: 30/08/2009

Segnala al moderatore
Postato alle 7:33
Lunedì, 31/08/2009
Grazie mille.. adesso gira alla perfezione e, in esecuzione, fa ciò per cui era destinato:-) Quindi grazie..


Balla coi lupi...
PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 13:55
Lunedì, 31/08/2009
Di niente!:k:


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM Quote