每当我用键10输入Dizzy这样的字符串时,例如输出部分错误。我有这样的东西===> ns���
,而我应该有nsjji
。
Serial.print("KEY: ");
Serial.println(k);
if ((choice[0]=='e') || (choice[0]=='E')){
int i;
char ch;
for (i=0; str[i] != '\0'; i++){
ch=str[i];
if( ch >= 'a' && ch <= 'z'){
ch=ch+k;
if (ch >'z'){
ch=ch-'z'+'a'-1;
}
str[i]=ch;
}
else if(ch >='A' && ch <= 'Z'){
ch=ch+k;
if (ch > 'Z'){
ch=ch-'Z'+'A'-1;
}
str[i]=ch;
}
}
Serial.print("encrypt: ");
Serial.println(str);
答案 0 :(得分:1)
问题是z的字符值为122.然后你加10,你得到132。 C中的字符是-128到127(带符号),你可能希望它是0-255然后它必须是无符号的。
所以,当你达到最高值127时,就会出现问题..
更改
char ch;
改为:
unsigned char ch;