Kieli on C ja (binääri)tiedostoa eteenpäin luettaessa voidaan sen loppu eof löytää (file.eof()) mutta mitenkä on taaksepäin lukemisen kanssa. Voidaanko tiedoston alku löytää jollain vastaavalla funktiolla tai lipulla kun tiedoston alku ohitetaan? Seuraavassa selventävää esimerkkikoodia, jossa tapahtuu tiedoston alun "ylitys". Esimerkissä on tarkoituksella laitettu tiedosto-osoitin kolmen tavun päähän alusta.
ifstream file("test.dat", ios::binary);
char merkki;
file.seekg(3);//Asetetaan tiedosto-osoitin
for(int i=0;i
ifstream file("test.dat", ios::binary);
char merkki;
file.seekg(3);//Asetetaan tiedosto-osoitin
for(int i=0;i
Vastaukset 4
Vanhimmat
Olisko file.bof()..?
VB6:ssa löytyy bof muttei C :ssa.
ifstream ei ole C:tä nähnytkään.
Mutta C kielessä löytyy käsky
ftell(FILE *fp) joka kertoo missä kohdassa tiedostoa ollaan C versiosta löytyy sama ? taitaa olla tuo tellg()...
Totta, ei ifstreamiä C:ssä vaan C :ssa. Ajatuksissaan jäi pois.
Funktio tellg() kertoo kyllä tiedosto-osoittimen paikan, mutta jos se menee tiedoston alkuun ja sen jälkeen edelleen "taaksepäin", ponnahtaa osoitin takaisinpäin.
Tietenkin voi testata if(tellg()-static_cast (sizeof(char)