{
if(flag1)
{ // Открывающая скобка для флага 1
ReadFile(hCurFile1,ReadBuffer1,BUF_SIZE,&dwNumBytesRead1,NULL); // Чтение файла
if(flag1_1)
{
lpSeqPtr2_1 = strstr(ReadBuffer1,sSeq1); // Первый num2
if(lpSeqPtr2_1)
{
lStringSize1 = (lpSeqPtr2_1 - ReadBuffer1) + Entry_StartFragmentSize1;
auxptr1 = new char[lStringSize1+1];
strncpy(auxptr1,CurEntryBuf1,Entry_StartFragmentSize1); // Правильно
strncpy(auxptr1+Entry_StartFragmentSize1,ReadBuffer1, lpSeqPtr2_1 - ReadBuffer1);
tempptr = CurEntryBuf1;
CurEntryBuf1 = auxptr1;
auxptr1 = tempptr;
}
else
{
// сюда попадаем, если не нашли в новом куске ключевое слово
lStringSize1 = BUF_SIZE + Entry_StartFragmentSize1;
auxptr1 = new char[lStringSize1+1];
strncpy(auxptr1,CurEntryBuf1,Entry_StartFragmentSize1);
strncpy(auxptr1+Entry_StartFragmentSize1,ReadBuffer1, BUF_SIZE);
tempptr = CurEntryBuf1;
CurEntryBuf1 = auxptr1;
auxptr1 = tempptr;
Entry_StartFragmentSize1 = lStringSize1;
continue;
}
}
else
{
lpSeqPtr1_1 = strstr(ReadBuffer1,sSeq1); // Первый num2
lpSeqPtr1_1 += 4;
lpSeqPtr2_1 = strstr(lpSeqPtr1_1,sSeq1); // Второй num2
lStringSize1 = lpSeqPtr2_1 - lpSeqPtr1_1; // Вычисление длины записи
CurEntryBuf1 = new char[lStringSize1+1];
strncpy(CurEntryBuf1,lpSeqPtr1_1,lStringSize1);
}
} // закрывающая скобка для флага
CurEntryBuf1[lStringSize1] = '\0';
// БУФЕР КОТРЫЙ БУДЕТ КОПИРОВАТЬСЯ В 3 ФАЙЛ С ВСТАВКАМИ NUM2 В НАЧАЛЕ И В КОНЦЕ МАССИВА
lpTempPtr1_1 = CurEntryBuf1;
lpTempPtr1_1 += 15;
masspol1 = lpTempPtr1_1;
// Полуение номера по которому находится разделительный символ.
pdest1 = strchr( masspol1, ch ); // Нахождение в строке заверщающего знака.
result1_1 = pdest1 - masspol1 + 1;
// Получение строки с полями.
help = new char[result1_1+1];
strncpy(help,masspol1,result1_1);
help[result1_1] = '\0';
// в "Help" хранится строка с полями
hj = result1_1;
while(1)
{
pol = new char[3+1];
strncpy(pol,help,3);
pol[3] = '\0';
pdest = strstr( pol, ch1 );
if(pdest)
{
// Получение поля отвечающего за колличество символов в строке
znaks = new char[4+1];
strncpy(znaks,help+3,4);
znaks[4] = '\0';
ukaz = new char[5+1];
strncpy(ukaz,help+7,5);
ukaz[5] = '\0';
delete[] pol;
MyFlag = TRUE;
break;
}
delete[] pol;
help +=12;
hj -=12;
if(hj <= 0)
{break;}
}
if(MyFlag)
{
pole1 = atoi(znaks) ;
cout<<pole1<<endl; // колличество симовлов в нужной строке.
pole1_2 = atoi(ukaz) ;
cout<<pole1_2<<endl; // с какого символа начинается нужная строка.
ends1=masspol1;
ends1 += result1_1;
helpZap = new char[pole1+1];
strncpy(helpZap,ends1+pole1_2,pole1);
helpZap[pole1] = '\0';
cout<<helpZap<<endl;
delete[] znaks;
delete[] ukaz;
delete[] helpZap;
MyFlag = FALSE;
}
это часть...