그래서 C에서 수업을 들었고 연습 문제 중 하나는 암호화와 암호 해독 모두를 수행하는 시저 암호 프로그램을 프로그래밍하는 것이 었습니다. 그리고 입력이 "ab cd"이면 출력은 "de # fg"가되어야하지만 대신 "de? g?"가 출력됩니다. 내 추측에 의하면 스페이스 바가 모든 것을 엉망으로 만든다. 또한 "a"를 입력하고 "d? ad?"를 출력 할 때 또 다른 오류가 발견되었습니다. 미리 감사드립니다.C Caesar Cipher 오류 임의 문자열 출력
는#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'에 후행 null 바이트를 절대로 추가하지 마십시오. – Barmar
죄송합니다, C 프로그래밍에 대한 지식이 while 루프에서 끝나는 ... – user1885723
C 클래스를 사용하고 있으며 C 문자열이'\ 0'으로 끝나야한다는 것을 결코 가르쳐주지 않았습니까? 왜 while 루프가 그것을 테스트하는 것일까? – Barmar