シーザー暗号を作成しようとしていますので、すべての文字を13回プッシュする関数を宣言しました。そして、文字列を受け取り、それを暗号化または復号化する別の関数をforループで実行しました。 しかし、問題は、私はプログラムの開発を実行すると、これが出て来るものであるということである。シーザー暗号はC言語では機能しません
Original: This is the Original text
encrypted: QnÇ vÇü qre Bevtvanyüràü
decrypted: DaÇ âÇü der Orâüânaåüeàü
誰がこれを引き起こしている可能性がありますどのようなアイデアを持っていますか?
#include <stdio.h>
#include <stdlib.h>
int shift = 13;
char shiftchar(char ch){
if(((ch > 64) && (ch< 91)) || ((ch > 96) && (ch < 123))){
ch = ch + shift;
if(ch > 90 && ch < 104){
ch = ch - 90 +64;
}
else if(ch > 122 && ch < 136){
ch = ch -122 +96;
}
}
else{
ch = ch;
}
}
void cipher (char str[]){
for(int i = 0; str[i] != 0; ++i){
str[i] = shiftchar(str[i]);
}
}
int main(void){
char str[25] = "This is the original text";
printf("Original: ");
printf("%s\n", str);
cipher(str);
printf("encrypted: ");
printf("%s\n", str);
cipher(str);
printf("decrypted: ");
printf("%s\n", str);
}
数値 '64'、91'' '96'、' 123'、 '90'、' 104'、 '122'、' 136'は赤いフラグであるの使用。文字定数「A」、「Z」、「a」、「z」を使用し、 '>'を '> ='と '<'〜 '' <= ' 。 ''の 'isupper()'と 'islower()'関数も役に立ちます。 –