忙しい中失礼します。プログラムに関する質問です。
現在C言語で暗号文のプログラムを作成しています。プログラムの過程は以下の通りです。
1.ユーザーに 1暗号化/2標準化/3中止(何もしない)を選択させる
2.ABC(標準文)→DEF(暗号文)に変換[3文字ずらす] 最大入力80文字
3.DEF(暗号文)→ABC(標準文)に変換[3文字戻す] 最大入力80文字
というようにプログラムを組むものです。
で、質問です。
質問. どうすれば、1.文の中で1(暗号化)を選択した後、2.の処理を行ってもらえるのでしょうか?
補足質問. 2.と3.において、どうすれば最大入力80文字を設定することが出来るのでしょうか?
アドバイス等あれば回答願います。
※
1.文のプログラム printf("You select encrypt.\n"); 部分に作成した2.文(下記文参照)を入れても、2.の処理を行ってもらえません。
ソフト使用環境:Borland C ?? (多分最新版です。C、C++使用可)
パソコン環境:Windows XP
1.文のプログラム
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1;
printf("What do you want? Select the number\n");
printf(" 1.encrypt(暗号化) Cange decryption letters into encryption letters\n");
printf(" 2.decrypt(標準化) Cange encryption letters into decryption letters\n");
printf(" 3.quit You don't need to write letters.\n");
printf("Enter the number: ");
scanf("%d", &num1);
if(num1 == 1)
{
printf("You select encrypt.\n"); ←ココに2.文のプログラムを入れようとしています。
}
else if(num1 == 2)
{
printf("You select decrypt.\n");
}
else
{
printf("You don't do anything.\n");
}
system("PAUSE");
return 0;
}
2.文のプログラム
int main(void)
{
char *upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int c, i;
while((c = getchar()) != '\n'){
for(i = 0; upper; i++)
{
if(c == upper)
{
c = upper[(i + 3) % 26];
break;
}
}
putchar(c);
}
system("pause");
return 0;
}
暗号文のプログラム
Re:暗号文のプログラム
> 質問. どうすれば、1.文の中で1(暗号化)を選択した後、2.の処理を行ってもらえるのでしょうか?
system 関数を使うのが一番簡単です。
> 補足質問. 2.と3.において、どうすれば最大入力80文字を設定することが出来るのでしょうか?
最大文字数が決まっているのであれば、
fgets を使ってもよいのですが、改行文字を除去するのが面倒です。
system 関数を使うのが一番簡単です。
> 補足質問. 2.と3.において、どうすれば最大入力80文字を設定することが出来るのでしょうか?
最大文字数が決まっているのであれば、
char s[80+1]; scanf("%80[A-Z]", s);のようにするのが一番簡単です。
fgets を使ってもよいのですが、改行文字を除去するのが面倒です。
Re:暗号文のプログラム
早速の回答ありがとうございます。
2.と3.について質問があります。
char s[80+1];
scanf("%80[A-Z]", s);
の文ですが、2.文のプログラムのどこに その文 を(訂正して?)入れれば良いのでしょうか?
想像すらつきません。
お手数かと思いますが、もう少し詳しく教えて頂きますか?
system関数ですか?? ネットで調べてみます。アドバイスありがとうございました。
2.と3.について質問があります。
char s[80+1];
scanf("%80[A-Z]", s);
の文ですが、2.文のプログラムのどこに その文 を(訂正して?)入れれば良いのでしょうか?
想像すらつきません。
お手数かと思いますが、もう少し詳しく教えて頂きますか?
system関数ですか?? ネットで調べてみます。アドバイスありがとうございました。
Re:暗号文のプログラム
配列にコピーするときに数字を足していったら良いんじゃないかな?
test = moji + 3;
これはできなかったっけ・・・?
とりあえず、配列のコピーでその間をいじればいいかと思います。
test = moji + 3;
これはできなかったっけ・・・?
とりあえず、配列のコピーでその間をいじればいいかと思います。
Re:暗号文のプログラム
> test = moji + 3;
>
> これはできなかったっけ・・・?
できますが、'Z' を超えたときの処理が必要です。
なお、これが「できる」のは処理系が特定されているからであって、厳密な意味での移植性はありません。
>
> これはできなかったっけ・・・?
できますが、'Z' を超えたときの処理が必要です。
なお、これが「できる」のは処理系が特定されているからであって、厳密な意味での移植性はありません。