Proszę Was o pomoc bo odbiło mi by się brać za to o 3 w nocy ;/ Chciałem sobie zrobić na własny użytek (nie komercha ani do szkoły) program formatujący mi pewien szablonowy tekst w konkretny sposób. I robiąc to w nocy za bardzo się zamotałem i nawet czytanie zbliżonych tematów na waszym forum nie rozjaśnia mojego zaćmienia. Program kompiluje się ale nie robi tego co chcę :( poniżej wklejam treść i skasuję to co chyba zbędne...
może tak co on robi w założeniu:
1.obrabia plik dane.txt i zapisuje swój wynik do pomoc.txt
2.obrabia pomoc.txt i zapisuje część tego pliku do wynik.txt a resztę do pomoc2.txt
3.przekopiowuje pomoc2.txt do pomoc.txt (pomoc2 jest mniejszym plikiem niż pomoc)
4.trzeba zapętlić krok 2 i 3 aż plik pomoc.txt będzie pusty.
i wykrzaczam się na kroku 3-4 ale nie bardzo wiem gdzie. Strumienie nigdy nie były moją mocną stroną a teraz zachciało mi się eksperymentować z plikami. CopyFile też mi nie zdawało pożądanego rezultatu chyba że źle stosowałem.
#include <fstream>
#include <iomanip>
using namespace std;
int main(){
const int size = 20000;
char nameFile[size];
char nameFile2[size];
char nameFile3[size];
char nameFile4[size];
strcpy(nameFile,"dane.txt"); //nazwa pliku wejściowego
strcpy(nameFile2,"wynik.txt");//plik wynikowy
strcpy(nameFile3,"pomoc.txt");//plik pomocniczy
strcpy(nameFile4,"pomoc2.txt");//plik pomocniczy
ifstream wejscie(nameFile);
ofstream wyjscie(nameFile3, ios::out);
//tufragment który działa - pracując na dane.txt zapisuje wynik do pomoc.txt
wejscie.close();
wyjscie.close();
//i teraz coś psuję :| nie wiem czy poprawnie zapętlam to - chcę by stworzyć pętlę póki
//plik pomoc.txt nie jest pusty ale w pętli będę na nim pracował i go nadpisywał otwierając i zamykając
wejscie.open(nameFile); //nie miałem lepszego pomysłu więc złapałem cokolwiek
while(!wejscie){
wejscie.close();
ifstream wejscie2(nameFile3);//wejscie po lekkiej obrobce
ofstream wyjscie2a(nameFile2, ios::app);//wyjscie koncowe
ofstream wyjscie2b(nameFile4, ios::out);//wyjscie z etapem czesciowym
//tu fragment który się poprawnie wykonuje aktualizując wynik.txt a niewykorzystane dane zapisuje w pomoc2.txt
wejscie2.close();
wyjscie2b.close();
wyjscie2a.close();
//zamykam aby wszystkie pliki mi się ponadpisywały
//i teraz pies pogrzebany
//teraz fragment kontroli :
system("pause");
if(!wejscie2)
printf("lipa0\n");
if(!wyjscie2b)
printf("lipa-1\n");
//skoro zamknąłem strumienie to chyba powinno mi wypisać oba printfy a wypisuje "lipa0"
//chce przekopiowac file4 do file 3 (pomoc2.txt do pomoc.txt)
wejscie2.open(nameFile4, 'r');
wyjscie2b.open(nameFile3, 'w');
//również etap kontrolny:
if(!wejscie2)
printf("lipa1\n");
if(!wyjscie2b)
printf("lipa2\n");
//i nie powinien mi nic wypisać tylko je poprawnie otworzyć, natomiast wypisuje mi "lipa1"
//teraz przekopiowanie plików ale skoro źle otworzył to w drugim obrocie pętli zeruje mi te pliki :(
char buff;
while (!wejscie2.eof()){
wejscie2 >> buff;
wyjscie2b << buff;
}
wejscie2.close();
wyjscie2b.close();
wejscie.open(nameFile3);//a to rzekomo aby zapętlić względem nameFile3 czyli pomoc.txt
}
return 0;
}
Może wystarczy że się wyśpię i jutro sam zobaczę rozwiązanie ;) ale obawiam się że nie dlatego zwracam się do was o pomoc najlepiej językiem dla laika bym nie musiał odpalać googli by zrozumieć waszą odpowiedź :D
chciałbym to dziś skończyć bo niedziela zajęta a od poniedziałku studia i pewnie nie będzie już czasu, więc jak dziś nie zrobię to pewnie rzucę to w czorty aż do wielkanocy a szkoda by było bo nockę na to straciłem :/ ale z góry dziękuję za każdego posta z sugestią/wyjaśnieniem :)