Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: problema seekg  (Citit de 1858 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
dany123
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 17



Vezi Profilul
« : Ianuarie 31, 2010, 14:10:49 »

incerc sa fac cateva exercitii cu fisiere si am facut programul asta care vrea sa afiseze de 2 ori un fisier, dar nu inteleg ce gresesc Brick wall

ps:stiu ca sunt moduri mai usoare de a face ce vreau eu dar as vrea sa inteleg de ce nu merge asta
ps2:folosesc MinGW

Cod:
#include <iostream>
#include <fstream>
using namespace std;

int main () {
char a[1000];
ifstream fin ("date.in", ios::ate);

fin.seekg(0, ios::beg);

while (fin>>a)
cout<<fin.tellg()<<' '<<a<<endl;
//pana aici e ok

cout<<"\nfin: "<<fin.tellg(); //arata -1
fin.seekg(0, ios::beg);
cout<<"\nfin: "<<fin.tellg(); //tot -1

cout<<endl<<endl;

while (fin>>a) //partea asta n-o executa deloc
cout<<fin.tellg()<<' '<<a<<endl;

fin.close();
return 0;
}
« Ultima modificare: Ianuarie 31, 2010, 14:22:20 de către dany123 » Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #1 : Ianuarie 31, 2010, 15:50:41 »

http://www.cplusplus.com/reference/iostream/istream/seekg/ Smile
Memorat
dany123
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 17



Vezi Profilul
« Răspunde #2 : Ianuarie 31, 2010, 16:28:31 »

am citit articolul de pe cplusplus
ei au linia: is.seekg (0, ios::beg);
iar eu: fin.seekg (0, ios::beg);


problema e ca la mine nu-mi reia fisieru de la inceput dupa ce il parcurg odata
am simplificat programu cat am putut
am asa acum:
1. declar fisieru
2. il parcurg, citind din el cat se poate (adica pana la sfarsit), cu un while
3. am instructiunea fin.seekg (0, ios::beg);  care ar trebui sa duca pointeru de citire la inceputul fisierului
4. citesc din nou din fisier si afisez dar imi afiseaza doar ultimul cuvant din fisier, desi ar trebui sa o ia de la inceput (deci sa afiseze primul cuvant)
5. inchid fisieru

Cod:
#include <iostream>
#include <fstream>
using namespace std;

int main () {
char a[1000];
ifstream fin ("date.in");

while (fin>>a)
cout<<"bucla while: "<<a<<endl;

fin.seekg (0, ios::beg);
cout<<endl<<endl;

fin>>a;
cout<<a<<endl;

fin.close();
return 0;
}
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #3 : Ianuarie 31, 2010, 17:20:46 »

Cod:
#include <iostream>
#include <fstream>
using namespace std;

int main () {
char a[1000];
ifstream fin ("date.in");

while (fin>>a)
cout<<"bucla while: "<<a<<endl;

cout<<endl<<endl;
fin.close();
        fin.open("date.in");
        while( fin>>a )
   cout<<a<<endl;

fin.close();
return 0;
}
« Ultima modificare: Ianuarie 31, 2010, 17:39:46 de către alexandru » Memorat
dany123
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 17



Vezi Profilul
« Răspunde #4 : Ianuarie 31, 2010, 17:38:14 »

o sa razi dar tot la fel imi face Wink) (vezi ca in codu tau ai pus la a 2-a deschidere alt nume de fisier (data.in in loc de date.in) )

vad ca obtin ce trebuie daca aloc alta variabila fisierului (gen fin2); dar nu inteleg de ce nu merge seekg-ul, din cate inteleg eu asta ar trebui sa fie rostul lui
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #5 : Ianuarie 31, 2010, 17:39:19 »

La mine merg Wink
Dar asta ar trebui sigur
Cod:
#include <iostream>
#include <fstream>
using namespace std;

int main () {
  int a;

  ifstream fin;
  fin.open( "date.in" );
  cout<<"First Cycle: ";
  while( fin >> a )
          cout<<a<<' ';
  fin.clear();
  fin.seekg( 0, ios::beg );
  cout<<"\nSecond Cycle: ";
  while( fin>>a )
        cout<<a<<' ';
  return 0;
}
Memorat
dany123
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 17



Vezi Profilul
« Răspunde #6 : Ianuarie 31, 2010, 17:45:35 »

dap, asta imi merge  Applause

mersi mult  Very Happy
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines