Potrzebuje waszej pomocy w kodzie, gdyż będę chciał dodać kilka podobnych funkcji, a już mi się wszystko zaczyna mieszać. Oto kod:
#include <fstream>
#include <iostream>
#include <conio.h>
#include <string.h>
#include <utility>
#include <string>
#include <stdio.h>
#include <time.h>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <Windows.h>
using namespace std;
pair<string, string> czas() {
string DTBLE, TIME;
time_t rawtime;
struct tm* timeinfo;
char buffer[80];
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, 80, "%Y%m%d%H%M%S", timeinfo);
string data(buffer);
string nowa;
DTBLE = data.substr(2, 6);
TIME = data.substr(8, 6);
return make_pair(DTBLE, TIME);
}
int main() {
HANDLE kolor;
string line;
string TPITI[99], SEMOV[99], CDMAG[99], MODAM[99], TELAC[99], FIL10[99],
CNTER[99], NRVEN[99], COLLO[99], CDCOL[99], DESC1[99], DTMER[99],
VINNO[99], DADOC[99], CCAMTA[99];
string PREIM[99], FLCEE[99], ENGIN[99], LNPRD[99], CDFOA[99], SRCAR[99],
PESLO[99], CDCLM[99], INSAM[99], FREAM[99], PESNE[99], LPCAR[99],
MZZTR[99], ORPTY[99], CCAMTB[99];
string DESCL[99], NTORB[99], CDMA2[99], CDCLI[99], NRIND[99], RAIND[99],
ININD[99], CAIND[99], LOIND[99], PRIND[99], CDNAZ[99], CDCL2[99],
DESAS[99], DOGAN[99];
string NRIN2[99], RAIN2[99], ININ2[99], CAIN2[99], LOIN2[99], PRIN2[99],
CDNA2[99], ASVEF[99], I2IND[99], I2IN2[99], RRQNR[99], RRQDT[99],
OUTFL[99], CCAMT[99];
string NORSD[99], DTCOC[99], LPCUS[99], VECST[99], MODPV[99], DORSD[99],
CDVAL[99], NRPRG[99], NRFTF[99], TPASS[99], DAPCN[99], DABOG[99],
NRBOG[99];
string HEADER, HEADR, HDRTPITI, HDRNTRAS, HDRNRECO, HDRCDMAG, HDRMITTE,
HDRDTTRX, HDRORTRX;
string Rekord[99], wynik[99], wynikUZP[99], wynik2[99], wynik3[99], UZUPEL,
nazwa, typ;
int rekordy = 0, koniec = 0, i = 0, linie = 0, ile = 0, ile2 = 0, loop = 0,
loop2 = 0, licznik = 0, uzup = 15;
kolor = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(kolor, 10);
// char odczyt[99];
// cout<<"Plik: ";
// cin>>odczyt;
fstream plik("in.txt", ios::in);
pair<string, string> bar = czas();
do {
getline(plik, line);
linie = linie + 1;
} while (!plik.eof());
plik.close();
typ = line.substr(0, 4);
if (typ == "010+") {
rekordy = linie - 1;
fstream plik3("in.txt", ios::in);
while (!plik3.eof()) {
getline(plik3, HEADR);
HDRTPITI = HEADR.substr(3, 5);
HDRNRECO = HEADR.substr(8, 5);
HDRCDMAG = HEADR.substr(13, 2);
HDRMITTE = HEADR.substr(15, 15);
HDRDTTRX = HEADR.substr(30, 6);
HDRORTRX = HEADR.substr(36, 6);
nazwa = "CAT" + HDRTPITI + ".txt";
for (int i = 0; i < rekordy; i++) {
getline(plik3, Rekord[i]);
TPITI[i] = Rekord[i].substr(0, 3);
SEMOV[i] = Rekord[i].substr(3, 1);
CDMAG[i] = Rekord[i].substr(4, 2);
MODAM[i] = Rekord[i].substr(6, 15);
TELAC[i] = Rekord[i].substr(21, 6);
FIL10[i] = Rekord[i].substr(27, 13);
CNTER[i] = Rekord[i].substr(40, 12);
NRVEN[i] = Rekord[i].substr(52, 10);
COLLO[i] = Rekord[i].substr(62, 6);
CDCOL[i] = Rekord[i].substr(68, 3);
DESC1[i] = Rekord[i].substr(71, 15);
VINNO[i] = Rekord[i].substr(92, 17);
NRFTF[i] = Rekord[i].substr(115, 11);
CDVAL[i] = Rekord[i].substr(126, 3);
PREIM[i] = Rekord[i].substr(129, 11);
FLCEE[i] = Rekord[i].substr(140, 1);
ENGIN[i] = Rekord[i].substr(141, 18);
LNPRD[i] = Rekord[i].substr(159, 1);
CDFOA[i] = Rekord[i].substr(160, 6);
SRCAR[i] = Rekord[i].substr(166, 1);
PESLO[i] = Rekord[i].substr(167, 7);
CDCLM[i] = Rekord[i].substr(174, 3);
INSAM[i] = Rekord[i].substr(177, 17);
FREAM[i] = Rekord[i].substr(194, 17);
PESNE[i] = Rekord[i].substr(211, 7);
wynik[i] = "040" + SEMOV[i] + CDMAG[i] + MODAM[i] + TELAC[i] +
bar.first + " " + bar.first + VINNO[i] + LNPRD[i] +
" \n";
}
int licznik = rekordy;
koniec = licznik + 1;
}
ile = (int)log10(koniec) + 1;
loop = 5 - ile;
const char* zapis = nazwa.c_str();
fstream plik2(zapis, ios::out);
plik2 << "HDR" << HDRTPITI << UZUPEL;
for (int i = 0; i < loop; i++) {
plik2 << "0";
}
plik2 << koniec << " CAT2W " << bar.first << bar.second << "\n";
for (int i = 0; i < rekordy; i++) {
plik2 << wynik[i];
}
}
if (typ == "013+") {
rekordy = linie - 1;
fstream plik3("in.txt", ios::in);
while (!plik3.eof()) {
getline(plik3, HEADR);
HDRTPITI = HEADR.substr(3, 5);
HDRNRECO = HEADR.substr(8, 5);
HDRCDMAG = HEADR.substr(13, 2);
HDRMITTE = HEADR.substr(15, 15);
HDRDTTRX = HEADR.substr(30, 6);
HDRORTRX = HEADR.substr(36, 6);
nazwa = "CAT" + HDRTPITI + ".txt";
for (int i = 0; i < rekordy; i++) {
getline(plik3, Rekord[i]);
TPITI[i] = Rekord[i].substr(0, 3);
SEMOV[i] = Rekord[i].substr(3, 1);
LNPRD[i] = Rekord[i].substr(4, 1);
MODAM[i] = Rekord[i].substr(5, 15);
TELAC[i] = Rekord[i].substr(20, 6);
VINNO[i] = Rekord[i].substr(26, 17);
DESCL[i] = Rekord[i].substr(43, 40);
NTORB[i] = Rekord[i].substr(83, 1);
CDMA2[i] = Rekord[i].substr(84, 2);
CDCLI[i] = Rekord[i].substr(86, 6);
NRIND[i] = Rekord[i].substr(92, 2);
RAIND[i] = Rekord[i].substr(94, 35);
ININD[i] = Rekord[i].substr(129, 35);
CAIND[i] = Rekord[i].substr(164, 9);
LOIND[i] = Rekord[i].substr(173, 20);
PRIND[i] = Rekord[i].substr(193, 2);
CDNAZ[i] = Rekord[i].substr(195, 3);
CDMAG[i] = Rekord[i].substr(198, 2);
CDCL2[i] = Rekord[i].substr(200, 6);
NRIN2[i] = Rekord[i].substr(206, 2);
RAIN2[i] = Rekord[i].substr(208, 35);
ININ2[i] = Rekord[i].substr(243, 35);
CAIN2[i] = Rekord[i].substr(278, 9);
LOIN2[i] = Rekord[i].substr(287, 20);
PRIN2[i] = Rekord[i].substr(307, 2);
CDNA2[i] = Rekord[i].substr(309, 3);
ASVEF[i] = Rekord[i].substr(312, 1);
I2IND[i] = Rekord[i].substr(313, 35);
I2IN2[i] = Rekord[i].substr(348, 35);
RRQNR[i] = Rekord[i].substr(383, 7);
RRQDT[i] = Rekord[i].substr(390, 10);
OUTFL[i] = Rekord[i].substr(391, 1);
CDCOL[i] = Rekord[i].substr(394, 3);
CDCLM[i] = Rekord[i].substr(397, 3);
wynik[i] = "014" + SEMOV[i] + LNPRD[i] + MODAM[i] + TELAC[i] +
VINNO[i] + bar.first + " " + CDMAG[i] + CDCL2[i];
}
int licznik = rekordy * 1;
koniec = licznik + 1;
}
ile = (int)log10(koniec) + 1;
loop = 5 - ile;
const char* zapis = nazwa.c_str();
fstream plik2(zapis, ios::out);
plik2 << "HDR" << HDRTPITI << UZUPEL;
for (int i = 0; i < loop; i++) {
plik2 << "0";
}
plik2 << koniec << " CAT2W " << bar.first << bar.second << "\n";
for (int i = 0; i < rekordy; i++) {
plik2 << wynik[i];
plik2 << "\n";
}
}
if (typ == "030+") {
rekordy = linie - 1;
fstream plik3("in.txt", ios::in);
while (!plik3.eof()) {
getline(plik3, HEADR);
HDRTPITI = HEADR.substr(3, 5);
HDRNRECO = HEADR.substr(8, 5);
HDRCDMAG = HEADR.substr(13, 2);
HDRMITTE = HEADR.substr(15, 15);
HDRDTTRX = HEADR.substr(30, 6);
HDRORTRX = HEADR.substr(36, 6);
nazwa = "CAT" + HDRTPITI + ".txt";
for (int i = 0; i < rekordy; i++) {
getline(plik3, Rekord[i]);
TPITI[i] = Rekord[i].substr(0, 3);
SEMOV[i] = Rekord[i].substr(3, 1);
CDMAG[i] = Rekord[i].substr(4, 2);
MODAM[i] = Rekord[i].substr(6, 15);
TELAC[i] = Rekord[i].substr(21, 6);
DESCL[i] = Rekord[i].substr(27, 40);
TPASS[i] = Rekord[i].substr(67, 1);
DESAS[i] = Rekord[i].substr(68, 30);
VINNO[i] = Rekord[i].substr(98, 17);
MZZTR[i] = Rekord[i].substr(115, 4);
NTORB[i] = Rekord[i].substr(119, 1);
LNPRD[i] = Rekord[i].substr(120, 1);
ORPTY[i] = Rekord[i].substr(121, 1);
NRPRG[i] = Rekord[i].substr(122, 7);
DAPCN[i] = Rekord[i].substr(129, 6);
LPCAR[i] = Rekord[i].substr(135, 2);
CDCOL[i] = Rekord[i].substr(137, 3);
CDCLM[i] = Rekord[i].substr(140, 3);
wynik[i] = "022" + SEMOV[i] + CDMAG[i] + VINNO[i] + bar.first +
LNPRD[i] + NRPRG[i] + "\n";
wynik2[i] = "060" + SEMOV[i] + CDMAG[i] + MODAM[i] + TELAC[i] +
bar.first + DAPCN[i] + " " + VINNO[i] + LNPRD[i] +
" " + NRPRG[i] + "\n";
}
int licznik = rekordy * 2;
koniec = licznik + 1;
}
ile = (int)log10(koniec) + 1;
loop = 5 - ile;
const char* zapis = nazwa.c_str();
fstream plik2(zapis, ios::out);
plik2 << "HDR" << HDRTPITI << UZUPEL;
for (int i = 0; i < loop; i++) {
plik2 << "0";
}
plik2 << koniec << " CAT2W " << bar.first << bar.second << "\n";
for (int i = 0; i < rekordy; i++) {
plik2 << wynik[i];
}
for (int i = 0; i < rekordy; i++) {
plik2 << wynik2[i];
}
}
}