Я написал небольшой алгоритм шифрования строк, очень простой.
Это оно:
int chrCipher (int str)
{
char a[] = "abcdefghijklmnopqrstuvwxyz";
char b[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *c;
if ((c=strchr(a,str))!=NULL)
return a[((c-a)+13)%26];
if ((c=strchr(b,str))!=NULL)
return b[((c-b)+13)%26];
else return str;
}
void strCipher (char *dst, char *src)
{
while(*src)
{
*src=chrCipher(*src); // BREAKPOINT HERE
*++dst;
*++src;
}
}
Когда я запускаю свою программу в MSVS, я получаю точку останова в этом разделе, и в ней говорится: "Необработанное исключение в 0x0169b823: 0xC0000006 acess нарушение записи 0x01395474"
В чем проблема, и как я могу это исправить?
Я думаю, ваша проблема связана с неправильным обновлением src
а не dst
void strCipher (char *dst, char *src)
{
while(*src)
{
*src=chrCipher(*src); // <<== did you mean *dst = chrCipher(*src); here??
*++dst;
*++src;
}
}
Также не требуется разыменовывать строки, которые обновляют указатели.
Я бы добавил const
в параметр src
...
void strCipher (char *dst, const char *src); // prototype
*++dst;
вместо просто++dst;
?