問題は次のとおりです。
問題
平文と鍵を入力として,それをシーザー暗号に基づいて暗号化した結果を出力するCプログラムを作成せよ.
入力仕様
平文 str と鍵 n がコマンドライン引数として与えられる.
平文 str は文字列であり,その文字数は 1 以上 100 以下である.
文字列 str に含まれる文字は,英字アルファベットの大文字 (AからZまで) であり,英字アルファベットの小文字 (aからzまで) ,数字 (0から9まで) や空白などの記号は含まれない.
鍵 n は整数であり,0以上25以下である.
出力仕様
出力は標準出力に行う.
出力の後に改行する.
実行例
作成したプログラムのファイル名を g4.c としたときの実行例
html
1% gcc g4.c 2% ./a.out ELEPHANT 2 3GNGRJCPV 4% ./a.out HELLO 20 5BYFFI 6% ./a.out BUTTER 25 7ATSSDQ 8% ./a.out MICKEY 9 9VRLTNH
これに対し、以下のプログラムを作成しました。
html
1#include <stdio.h> 2#include <string.h> 3int main(int argc, char *argv[]) { 4 char bun[256]; 5 int n, j, shift; 6 int c; 7 n = strlen(argv[1]); 8 shift = atoi(argv[2]); 9 shift = shift % 26; 10 strcpy(argv[1], bun); 11 for (j = 0; j < n; j++) { 12 c = bun[j]; 13 if('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z'){ 14 c = c + shift; 15 if(c > 'z') c = c - 'z' + 'a'; 16 } 17 bun[j] = c; 18 } 19 20 printf("%s\n", bun); 21 return 0; 22} 23
しかし,実行しても
html
1% gcc g4.c 2% ./a.out ELEPHANT 2 3?
となってしまいました。恐らくコマンドラインの扱いでエラーが起きているのですが、原因がわからないので解決方法を教えてください。
回答1件
あなたの回答
tips
プレビュー