シーザー暗号(C言語)
シーザー暗号というものを作ろうとしていますが、文字のずらし方がわからず詰まっています。
手順は一応考えてあります。
(1)入力された文字を配列input[301]に代入
(2)何文字ずらすかを指定してその数値を変数countに代入
(3)入力された文字の長さを変数lenに代入
(4)inputとcountとlenを、文字をずらしてそれをoutputに返す関数shiftに渡す
(5)outputを表示する
のような感じですが、肝心の文字のずらし方がわかりません。
JISコードを使ってやるといいと聞いたんですが、そのやり方がわかりません。
ソース↓
#include <stdio.h>
#include <string.h>
int shift_char(char x[], int y, int z)
{
int i;
for(i = 0; i <= z; i++) {
x[i] = x[i] + y;
}
return x;
}
int main(int argc, char* argv[])
{
char input[301];
char output[301];
int count, len, i;
printf("文字を入力してください: ");
scanf("%s" ,input);
printf("何文字ずらしますか: ");
scanf("%d" ,count);
len = strlen(input);
output = shift_char(input, count, len);
for(i = 0; i <= len; i++) {
printf("%s" ,output[i]);
}
return 0;
}
よろしくお願いします。