tiedän että tiedostoon voidaan kirjoittaa näin;
...
ofstream e("testi.txt", ios_base::app);
cout s;
e
...
ofstream e("testi.txt", ios_base::app);
cout s;
e
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 7
Vanhimmat
Jos haluat että tiedostossa oleva data säilyy, on koko roska kirjoitettava uusiksi. Muuten sinne ei saa väliin lisättyä tavaraa.
ifstream lue
ifstream ohita muutettu rivi
ja korvaa se.
lue edelleen tulostiedostoon
ofstream tulos
Auttaneeko????
-Ei tarvitse kirjoittaa kaikkea uudestaan.
-Tutki tiedostoa rivi kerrallaan esim. getline().
-Täytyy tietää rivinumero tai jokin hakuehto rivi.
-Sitten muutetaan string(rivi),kun ollaan sen kohdalla(break).
Alkuperäinen tiedosto ifstream ja tulostiedosto ofstream ja
avatan alkuperäinen tiedosto ja tulostiedosto ja luetaan rivi ker-
rallaan tulostiedostoon.
ifstreamissa ohitetaan muutettu rivi ja korvataan (string rivi) ja
luetaan tulostiedostoon.
Löydetty rivi voidaan myös korvata halutusta merkkinumerosta lähtien.
Tulostiedosto nimetään vaikka temp.txt ja lukutiedosto deletoidaan,
ja temp.txt -->rename lukutiedosto.
-Onko pakko olla *.txt file ???
Jos teet structin ja käytät binary-formaattia tiedostossa,kaikki
käy helpommin!!
Ehkä en osaa selittää????
Lisäselvityksiä löytyy varmasti muiltakin!!
Täytyy mennä ottamaan uutta vuotta vastaan vielä "enemmän"!!
ansi c ja FILE * tukee fseekkiä jolla voidaan liikkua tiedostossa, streamista löytyy samanlainen...
kiitos vastauksista, pitänee huomenna testailla ajankanssa.
-- -- -- --
Hyvää Uuttavuotta 2006 kaikille !!!
Tuon aiemman neuvoni mukaan menetellään jos pitää
poistaa failista kokonainen tietue.Muutoin mennään vain
ao. rivin/tietueen kohdalle ja tehdään muutos alkuperäiseen
failiin.
Kun menet tältä sivulta seuraavalle,niin sieltä
löytyy OHJELMOINTITYÖ & C:llä 02.11.05.
Se on "täydellinen" tietokantaohjelma,jossa tietueen deletointi,
kirjoitus,tulostaminen ja muuttaminen ovat kukin
omissa funktioissaan.Katso siitä viimeisestä kohdasta=
"Lisätty tietueen muuttaminen".
Siinä on muutosfunktion periaate /C
*************************************
Mennään suoraan muutettavan tietueen kohdalle ja tehdään
muutos suoraan alkuperäiseen failiin.
Allaoleva on mukaelma omasta puhelinmuistio-ohjelmastani.
void muutatietue1(String tiedosto)
{
//Käyttäjä syöttää
String sukunimi="Kekkonen";
String etunimi="Urho Kaleva";
fstream change;//Luodaan virta
person muuta;//Otetaan olemassaoleva structi käyttöön
//Avataan tietokanta muutettavaksi
change.open(tiedosto.c_str(),ios_base::in|
ios_base::out | ios_base::ate | ios_base::binary );
//streampos on sama kuin tietuenumero
streampos rec;
//Käyttäjä antaa tietuenumeron=rec.
rec=12;
if(change.eof());
change.clear();
change.seekp((rec)*sizeof(muuta));
strcpy(muuta.sukunimi1,sukunimi;
strcpy(muuta.etunimet1,etunimi;
change.write((char*) & muuta,sizeof(muuta));
change.close();//Muutokset tehty