所以我一直在C上課,其中一個練習是編程一個凱撒密碼程序,既加密和解密。當輸入是「ab cd」時,輸出應該是「de#fg」,而輸出「de?g?」。所以我的猜測是空間條把所有東西都弄亂了。但是,當我輸入「a」並輸出「d?ad?」時也發現了另一個錯誤。提前致謝。C凱撒密碼錯誤隨機字符串輸出
#include <stdio.h>
#include <string.h>
void cipher(char plain_str[], char cipher_str[]);
void decipher(char cipher_str[], char decipher_str[]);
int main() {
char plain_str[30];
char cipher_str[30];
char decipher_str[30];
printf("Enter plain string: ");
scanf("%s", plain_str);
cipher(plain_str, cipher_str);
decipher(cipher_str, decipher_str);
}
void cipher(char plain_str[], char cipher_str[]) {
int i = 0;
while(plain_str[i] != '\0') {
if((plain_str[i]+3) >= 0 && (plain_str[i]+3) <= 127) {
cipher_str[i] = plain_str[i] + 3;
} else {
cipher_str[i] = plain_str[i] - 124;
}
i++;
}
printf("%s\n", cipher_str);
}
void decipher(char cipher_str[], char decipher_str[]) {
//asdf
}
您從不將追尾空字節添加到'cipher_str'。 – Barmar 2014-11-02 07:08:53
抱歉,我不明白,我的C編程知識在while循環處結束... – user1885723 2014-11-02 07:15:05
您已經參加了C課程,他們從未教您C語言字符串必須以'\ 0'結尾?這不就是爲什麼'while'循環測試的嗎? – Barmar 2014-11-02 07:16:42