zamiana na duze litery, oper na plikach

0

mam mały problem, ponizej jest kod ktory zamienia znaczniki z pliku html na duze litery i zapisuje je w nowym pliku, jednak algorytm oparty na pętlach wykonuje się tylko dla pierwszych linii pliku (przez polecnie getline), przecież jest tutaj zapętlenie i wydaj mi się ze jest dobrze zrobione(pętla przeszukuje wg kolenych znaczników kolejne liniijki pliku html, wiec dlaczego dziala tylko dla pierwszch linijek ?? pomóżnie bo już wariuje przy tym kodize i nie moge dojsc błedu

do                     								//petla przeskakujaca po znacznikach (kazdy w innej linii
	{
		baza_out.getline(znacznik,1024);
		do												//przy okreslonym znaczniku w tablicy 'znacznik' lecimy po calym html linia po linii
   		{
			zrodlo_out.getline(zrodlo,1024);
			pozycja_poczatkowa=BM(zrodlo,znacznik);				//szukanie wzorca i przyporz zm 'pozycja_poczatkowa' polozenia znaleziska(wsp poczatkowa)
            i=1;
			do													//znajdywanie konca znacznika
			{
            	pomocnik=zrodlo[pozycja_poczatkowa+i];          //pomocnik zaw. kolejne znaki znacznika
				if(pomocnik==62)
				{
					pozycja_koncowa=pozycja_poczatkowa+i;       //jezeli napotka koniec znaczika 62='>' to do poz kon = poz pocz + przesuniecie
					break;
				}
				i++;
			}
			while(1!=2);										//nieskonczony warunek bo break wyzej przerywa pentle
			if(pozycja_poczatkowa!=-1)							//zapisywanie do nowego pliku,jezeli BM nie zwraca -1(zw -1<=>nic nie znalazl
			{
            	dl_zrodla=strlen(zrodlo);						//pomocnicza przy petli wartosc dl linijki zrodlowej
				for(i=0;i<=pozycja_poczatkowa;i++) nowy_in<<zrodlo[i];	//wyp do now pliku wartosci przed znacznikiem
				for(i=pozycja_poczatkowa+1;i<pozycja_koncowa;i++)		//wyp znacznika
				{
					pomocnik=zrodlo[i];
					pomocnik2=pomocnik;
					zrodlo[i]=pomocnik2-32;								//zamiana z malych lit na duze poprzez roznice w kodzie ascii
					nowy_in<<zrodlo[i];
				}
				for(i=pozycja_koncowa;i<dl_zrodla;i++) nowy_in<<zrodlo[i];	//dopisanie do now pliku reszty za znacznikiem				nowy_in<<"\n";                                              
            }
   		}
		while(!zrodlo_out.eof());
	}
	while(!baza_out.eof());
0

proszę, niech ktoś mi pomoze z powyzszym bo nie daje rady, oto czytelniejsza wersja algorytmu

#include<fstream.h>
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<io.h>

const K = 53; // litery(26+26) i spacja (1)				//start algorytm Boyera Moore'a 
int shift[K]; 

int indeks(char c) 
{
	switch(c)
	{ 
    	case 32: return 0; // spacja 
   	 	default: if(islower(c)) return c-'a'+1; 
                else return c-'A'+27; 
    } 
} 

void InitShift(char *w) 
{ 
  	int i,M=strlen(w); 
  	for(i=0; i < K; i++) shift[i]=M; 
    for(i=0; i < M; i++) shift[indeks(w[i])]=M-i-1; 
} 

int BM(char *t, char *w) 
{ 
  	int i,j,N=strlen(t),M=strlen(w),x; 
  	for(i=M-1,j=M-1; j > 0; i--,j--) 
  	while( t[i]!=w[j] ) 
	{
		x=shift[indeks(t[i])]; 
	  	if(M-j > x) i+=M-j; else i+=x;
        if(i >= N) return -1; 
        j=M-1; 
  	} 
 	return i; 
}
void main()
{
	char zrodlo[1024],baza[1024],znacznik[1024],znacznik_do_zamiany[1024],ch_baza,ch_html,pomocnik;
    int pozycja_poczatkowa,pozycja_koncowa,i,pomocnik2,dl_zrodla,j=1,k=1;
	ifstream zrodlo_out;
	ifstream baza_out;
	ofstream nowy_in;
	zrodlo_out.open("c:\\borlandc\\progs\\zamiana html\\index.htm");
	baza_out.open("c:\\borlandc\\progs\\zamiana html\\baza.txt");
	nowy_in.open("c:\\borlandc\\progs\\zamiana html\\nowy.txt");
	do                     				
	{
		baza_out.getline(znacznik,1024);
        i=1;
		do				
		{
        	cout<<znacznik;
			zrodlo_out.getline(zrodlo,1024);
			pozycja_poczatkowa=BM(zrodlo,znacznik);
            i=1;
			do			
			{
            	pomocnik=zrodlo[pozycja_poczatkowa+i]; 				if(pomocnik==62)
				{

					break;
				}
				i++;
			}
			while(1!=2);		
			if(pozycja_poczatkowa!=-1)	
			{
            	dl_zrodla=strlen(zrodlo);			
				for(i=0;i<=pozycja_poczatkowa;i++) nowy_in<<zrodlo[i];
				for(i=pozycja_poczatkowa+1;i<pozycja_koncowa;i++)		
				{
					pomocnik=zrodlo[i];
					pomocnik2=pomocnik;
					zrodlo[i]=pomocnik2-32;					
					nowy_in<<zrodlo[i];
				}
				for(i=pozycja_koncowa;i<dl_zrodla;i++) nowy_in<<zrodlo[i];
				nowy_in<<"\n";                                             
			}
			if(k==2&&j==1) cout<<pozycja_poczatkowa;
            j++;
   		}
		while(!zrodlo_out.eof());
        k++;
	}
	while(!baza_out.eof());
    cout<<pozycja_koncowa;
	getch();
	baza_out.close();
	zrodlo_out.close();
    nowy_in.close();
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1