我感覺好像這應該是非常基本的,但由於某種原因我卡住了。當在C中執行Rot13時崩潰
以下是我有:
char *rot13(char *s)
{
char *p=s;
int upper;
while (*p) {
upper=toupper(*p);
if (upper >='A' && upper <= 'M')
*p+=13;
else if (upper>='N' && upper <= 'Z')
*p-=13;
++p;
}
return s;
}
我不是一個C大師,但我比較肯定的是一些小事我似乎無法查明它。我得到的錯誤是,一旦擊中某一炭改性劑(*p+=13
或*p-=13
)我得到「未處理的異常在############:訪問衝突寫入位置#####」
我在做什麼錯?
感謝
要知道,你的函數將不會使用類似[EBCDIC](HTTP系統正常工作:// EN .wikipedia.org /維基/ EBCDIC#Codepage_layout)。從0到9的數字可以依賴於連續,但是字母不是。 – chris
該函數看起來非常正確。你是怎麼稱呼這個功能的? –
你傳遞的函數是一個常量字符串嗎? –