Mam taki mały programik, którego zadaniem jest pobranie linii tekstu z pliku tekstowego, wywalenie z danej linii znaku '/'' i wszystkich znaków po nim występujących oraz zapisanie takiej linii do drugiego pliku a następnie pobranie następnej linii i tak do końca pliku. Gdy otworze pierwszy plik, usune znaki i zapisze to wszystko jest jak najbardziej ok, ale gdzy chce zrobić to samo z innym plikiem to plik wynikowy takiej operacji jest pusty. Aby zrobić to z drugim plikiem musze wyłączyć i włączyć program poniewaz wtedy znowy wszystko działa tak jak należy. Nie mam dużego doświadczenia z operacjeami I/O na plikach więc wybaczcie jeśli rozwiazanie problemu będzie proste.
Program wygląda tak:
ifstream plik1;
ofstream plik2;
class Tslowo{
public:
Tslowo();
char slowo[100];
void zeruj();
void usun(char*/*,char**/);
} ;
Tslowo::Tslowo(){
for(int i=0; i<100; i++){
slowo[i]=0;
}
}
void Tslowo::zeruj(){
for(int i=0; i<100; i++){
slowo[i]=0;
}
}
void Tslowo::usun(char *slowo/*,char *znak*/){
char znak='/';
for(int i=0; i<(strlen(slowo)+1);i++){
if(slowo[i]==znak){
for(;i<strlen(slowo);i++){
slowo[i]=0;
}
return ;
}
}
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::BOpenClick(TObject *Sender)
{
if(OpenDialog->Execute())
plik1.open(OpenDialog->FileName.c_str(),ios::in );
}
void __fastcall TForm1::BUsunClick(TObject *Sender)
{
Tslowo wyraz;
if(SaveDialog->Execute()){
plik2.open(SaveDialog->FileName.c_str(),ios::out );
while(plik1.getline(wyraz.slowo ,99)){
wyraz.usun(wyraz.slowo);
plik2<<wyraz.slowo<<endl;
wyraz.zeruj();
}
}
plik1.close();
plik2.close();
}