나는 시저 암호로 작업 중이며 문자의 ascii를 기반으로 배열에 내 암호 키의 문자를 저장하려고합니다. 대변한다고 생각 했어. 그래서 만약 내 암호 char key [] = "codezyxwvutsrqpnmlkjihgfba" 배열의 첫 번째 문자 (c)는 ascii num이 97 인 문자 a를 나타냅니다. 따라서 97 번째 자리에 배열에 c를 저장하고 싶습니다. 매번이 배열을 시도하면 배열이 비어있게됩니다.배열에서 문자를 ascii num 위치에 저장하는 방법 c
char key[] = {"codezyxwvutsrqpnmlkjihgfba"};
char alphabet[] = {"abcdefghijklmnopqrstuvwxyz"};
char answerKey[200] = "";
for (int i = 0; key[i] != '\0'; i++) {
answerKey[(int) alphabet[i]] = key[i];
}
for (int i = 0; answerKey[i] != '\0'; i++) {
printf("%c", answerKey[i]);
}
표제에 대한 응답이 'A [C = C를이다' –
을 지표로 문자의 ASCII 코드를 사용하여 요소 97에서 122까지만 값을 할당합니다. 다른 모든 요소는 0입니다. 따라서 인쇄 루프가 작동하지 않습니다 :'answerKey [0]'이 0입니다. (루프 조건'str [i]! = '\ 0''은 널 문자가 내장되어 있지 않은 문자열에만 유용합니다.) –
'(key [i] -97) % 27)'처럼 알파벳의 크기를 줄여야합니다. 이 방법으로 27 개의 알파벳 배열로만 저장할 수 있습니다! –