就是这样:
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访问违规写入0x01395474"
这里有什么问题,我该如何解决?
答案 0 :(得分:2)
我想您的问题是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