Dostaje komunikat jak w temacie, w moim rozumieniu jest to przekroczenie zakresu zaadresowanej pamięci.
#include
#include
#include
using namespace std;
const char cTablica [] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','0','+','/'};
string Kodowanie (string sZrodlo )
{
string sZakodowany;
unsigned int nDlugosc = 0;
while (sZrodlo [nDlugosc]) nDlugosc++;
sZakodowany.resize ((nDlugosc/3+1)*4);
unsigned int nPozycjaZakodowany = 0;
for (unsigned int i = 0; i < nDlugosc/3; i++)
{
cout << "---" << nPozycjaZakodowany << "---";
sZakodowany [nPozycjaZakodowany] = cTablica[sZrodlo[nPozycjaZakodowany] >> 2];
sZakodowany [nPozycjaZakodowany+1] = cTablica [((sZrodlo [nPozycjaZakodowany]&3) << 4) | ((sZrodlo [nPozycjaZakodowany+1]&240) >> 4)];
sZakodowany [nPozycjaZakodowany+2] = cTablica [((sZrodlo [nPozycjaZakodowany+1]&15) << 2) | ((sZrodlo [nPozycjaZakodowany+2]&192) >> 6) ];
sZakodowany [nPozycjaZakodowany+3] = cTablica [sZrodlo [nPozycjaZakodowany+2] & 63];
nPozycjaZakodowany += 4;
}
switch (nDlugosc%3)
{
case 2 :
{
sZakodowany [nPozycjaZakodowany] = cTablica[sZrodlo[nPozycjaZakodowany] >> 2];
sZakodowany [nPozycjaZakodowany+1] = cTablica [((sZrodlo [nPozycjaZakodowany]&3) << 4) | ((sZrodlo [nPozycjaZakodowany+1]&240) >> 4)];
sZakodowany [nPozycjaZakodowany+2] = cTablica [((sZrodlo [nPozycjaZakodowany+1]&15) << 2) | ((sZrodlo [nPozycjaZakodowany+2]&192) >> 6) ];
sZakodowany [nPozycjaZakodowany+3] = '=';
}
case 1 :
{
sZakodowany [nPozycjaZakodowany] = cTablica[sZrodlo[nPozycjaZakodowany] >> 2];
sZakodowany [nPozycjaZakodowany+1] = cTablica [((sZrodlo [nPozycjaZakodowany]&3) << 4) | ((sZrodlo [nPozycjaZakodowany+1]&240) >> 4)];
sZakodowany [nPozycjaZakodowany+2] = '=';
sZakodowany [nPozycjaZakodowany+3] = '=';
}
}
return sZakodowany;
}
int main ()
{
string sTest ("dupd");
cout << Kodowanie (sTest);
_getch ();
}
Błąd powoduje część kodu w switchu (nDlugosc%3).
Z góry dzięki za pomysły