2013-10-17 25 views
0

这里是我的功能:我的密码()函数似乎不支持大写字母

// Helper function for cipher() 
void cipherc(char& c, int key) 
{ 
    if (isupper(c)) { 
     c -= 'A'; 
    } else { 
     c -= 'a'; 
    } 

    c += key; 
    c %= MAX_KEY; 

    if (isupper(c)) { 
     c += 'A'; 
    } else { 
     c += 'a'; 
    } 
} 

我设计它支持大写字母,而我虽然这会工作。我不知道我在做什么。如果有人能给我一个更好的方法来解决这个问题,或者解决这个问题,那将会很棒。我希望(希望)保持功能相同,采取char&int并返回void

+1

到底是什么问题? – 0x499602D2

+5

修改'c'后,第二个'isupper'返回所需结果的可能性很小。 – chris

+0

对!这是有道理的... – Pocketkid2

回答

0

try代码那样:

char d = isupper(c) ? 'A' : 'a'; 
    c -= d; 
    c += key; 
    c %= MAX_KEY; 
    c += d; 
相关问题