代码写得比较trick……
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void exchange(char *s, const char *sigema)
{
while (*s) {
// 保持原大小写
*s = isupper(*s) ? sigema[*s-'A'] : tolower(sigema[*s-'a']);
s++;
}
}
void decryption(char *s, const char *sigema)
{
while (*s) {
*s = strchr(sigema, toupper(*s)) - sigema + (isupper(*s) ? 'A' : 'a');
s++;
}
}
int main(void)
{
char s[] = "MoMOtARO";
const char sigema[] = "QWERTYUIOPASDFGHJKLZXCVBNM";
exchange(s, sigema);
puts(s);
decryption(s, sigema);
puts(s);
return 0;
}