teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

サンプル追記

2018/06/27 07:35

投稿

HiroshiWatanabe
HiroshiWatanabe

スコア2160

answer CHANGED
@@ -1,3 +1,40 @@
1
1
  ・key++; の位置がおかしい
2
2
  ・一通り1文分のシフト作業が終わったら k を 0 で再初期化しないとそのまま繰り返し続けたら配列枠超過する
3
- ・scanfでは空白が区切りになるので「Jura gur」と入力してもこれでは「Jura」しか取れない
3
+ ・scanfでは空白が区切りになるので「Jura gur」と入力してもこれでは「Jura」しか取れない
4
+
5
+
6
+ ```c
7
+ #include <stdio.h>
8
+ #include <string.h>
9
+
10
+ int main(void){
11
+ char ct1[80];
12
+ char ct3[80];
13
+ int k, key;
14
+
15
+ strcpy(ct1, "Jura gur png vf njnl gur zvpr cynl.");
16
+ for (key = 1; key <= 25; ++key) {
17
+ for (k = 0; ct1[k] != '\0'; ++k) {
18
+ if(('a' <= ct1[k]) && (ct1[k] <= 'z')){
19
+ ct3[k] = ct1[k] - key;
20
+ if(ct3[k] < 'a')
21
+ ct3[k] += 26;
22
+ }else if (('A' <= ct1[k]) && (ct1[k] <= 'Z')){
23
+ ct3[k] = ct1[k] - key;
24
+ if(ct3[k] < 'A')
25
+ ct3[k] += 26;
26
+ } else {
27
+ ct3[k] = ct1[k];
28
+ }
29
+ }
30
+ ct3[k] = '\0';
31
+ printf("%s\n",ct3);
32
+ if((strstr(ct3,"the ") != NULL) || (strstr(ct3,"The ") != NULL))
33
+ break;
34
+ }
35
+ printf("Success\n");
36
+ printf("key = %d, str = %s\n",key,ct3);
37
+ return 0;
38
+ }
39
+
40
+ ```

1

記載漏れがあったので追記

2018/06/27 07:35

投稿

HiroshiWatanabe
HiroshiWatanabe

スコア2160

answer CHANGED
@@ -1,2 +1,3 @@
1
1
  ・key++; の位置がおかしい
2
- ・一通り1文分のシフト作業が終わったら k を 0 で再初期化しないとそのまま繰り返し続けたら配列枠超過する
2
+ ・一通り1文分のシフト作業が終わったら k を 0 で再初期化しないとそのまま繰り返し続けたら配列枠超過する
3
+ ・scanfでは空白が区切りになるので「Jura gur」と入力してもこれでは「Jura」しか取れない