Глава 1 (продолжение 1)
Программа 01_05
// Example_01_05 html-транслятор
#include <fstream.h>
#include <iostream.h>
#include <string.h>
//using namespace std;
bool flag1 = true;
void fun1(bool &fl)
{
flag1 = fl;
}
int main( int argc,char* argv[])
{
ifstream from1("text1");//открываем файл для считывания
if(!from1)
{
cout<<"Vhodnoi fail ne naiden:" ;
return (1);
}
ofstream to1("text2" ); // open for writing
if(!to1)
{
cout<<"Vyhodnoi fail ne naiden:" ;
to1.close(); // always pays to be tidy
return (1);
}
//--------------------------------------------------
int m = 0;
char buf[1024];
char buf1[2048];
char buf1a[2048] = "";
char buf1b[2048] = "";
char bufClear[] ="";
char* buf10;
buf10 = new char[];
buf10 = "<br>";
char* buf11;
buf11 = new char[];
buf11 = "<DIV CLASS=\"block_2\">";
char* buf12;
buf12 = new char[];
buf12 = "</DIV CLASS=\"block_2\">" ;
char* buf15;
buf15 = new char[];
buf15 = "<P>";
char* buf16;
buf16 = new char[];
buf16 = "}";
//--------------------------------------------------
while (!from1.eof())
{
from1.getline(buf,sizeof(buf));
m = 0;
int i = 0;
//--------------------------------------------------
//--------------------------------------------------
//вставим тег <P> если пустая строка
if(strlen(buf)==0)
{
m = 1;
for(int r =0;r<4;r++) // вставим тег пробела
{
buf1[m] = buf15[r];
m++;
}
buf1[m] = '\r';
m++;
for(r =1;r<4;r++) // вставим тег пробела
{
to1 << buf1[r];
}
to1 << '\r';
fun1(flag1=false);
continue;
}
////////////////////////////
for( i = 0;i<=1024;i++)
{
if(buf[i] =='{')
{
//копируем найденный символ '{' в массив buf1
buf1[m] = buf[i];
m++;
//делаем вставку лексемы из массива buf11 в массив buf1
for(int k =0;k<21;k++)
{
buf1[m] = buf11[k];
m++;
}
//лексема вставлена сбросим флаг
fun1(flag1=false); //знак конца строки есть
continue;
}//end if
//--------------------------------------------------
//--------------------------------------------------
if(buf[i] =='}')
{
//делаем вставку лексемы из массива buf12 в массив buf1
for(int l =0;l<22 ;l++)
{
buf1[m] = buf12[l];
m++;
}
//копируем найденный символ '}' в массив buf1
buf1[m] = buf[i];
m++;
continue;
} // end if
//--------------------------------------------------
//--------------------------------------------------
buf1[m] = buf[i];
m++;
} // end for
//--------------------------------------------------
//Во временном массиве buf1 содержится модифицированная строка buf
//если в предыдущей строке была лексема <DIV CLASS="block_2">
if(strstr(buf1b, buf11))
{
to1 << buf1 << "\n"; // and write it to the file
strcpy(buf1b, bufClear);
continue;
}
//если в предыдущей строке была лексема </DIV CLASS="block_2">
if(strstr(buf1b, buf12))
{
strcat(buf1a,buf10); // поместим тег <br> в buf1a
strcat(buf1a,buf1); // дополним buf1a строкой buf1
to1 << buf1a << "\n"; // and write it to the file
strcpy(buf1b, buf1a); // сохраним buf1a в buf1b
strcpy(buf1a,bufClear); //очистим buf1a
fun1(flag1=true);
continue;
}
if(flag1 == true ) //если пробела в предыдущей строке нет
strcat(buf1a,buf10); // поместим тег <br> в buf1a
strcat(buf1a,buf1); // дополним buf1a строкой buf1
to1 << buf1a << "\n"; // and write it to the file
strcpy(buf1b, buf1a); // сохраним buf1a в buf1b
strcpy(buf1a,bufClear); //очистим buf1a
fun1(flag1=true);
} //end while
//--------------------------------------------------
from1.close(); // always pays to be tidy
to1.close(); // always pays to be tidy
return 0;
}