質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

886閲覧

シーザー暗号のプログラムのエラー解決方法がわかりません。

aoba-purines

総合スコア13

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2022/01/24 15:56

問題は次のとおりです。

問題

平文と鍵を入力として,それをシーザー暗号に基づいて暗号化した結果を出力する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?

となってしまいました。恐らくコマンドラインの扱いでエラーが起きているのですが、原因がわからないので解決方法を教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

strcpyの引数が逆です。

あと、対象は英大文字ですよ。文字変換部分がおかしい。

投稿2022/01/24 16:05

otn

総合スコア84557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2022/01/24 16:06

デバッグの仕方は教えてもらってないのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問