- ベストアンサー
教えて下さい 文字数最大制限20文字まで暗号化
忙しい中失礼します。 先程質問したものですが、1つ聞き忘れていたことがあるため、再度質問させてください。 現在暗号化(原文字から3文字ずらす)するためのプログラムを作成しています。 下記のプログラムの文字数制限を20文字にしたいのですが、どこをどういじれば 20文字 という条件制約を加えることが出来るのでしょうか。 文字数制限20文字:PROGRAM HA MUZUKASII(→ここまでで20文字) SOSITE TAIHEN(→21文字目からは表示されない) 暗号に変換後:SURJUDP KD PXCXNDCLL(→20文字目までが表示される。それ以降は表示されない) 宜しければ教えて下さい。お願いします。 下記が私のプログラムです。 #include <stdio.h> #include <stdlib.h> int main(void) { char *upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int c, i; while((c = getchar()) != '\n') { for(i = 0; upper[i]; i++) { if(c == upper[i]) { c = upper[(i + 3) % 26]; break; } } putchar(c); } system("pause"); return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
int c, i; のところで、 int c, i,j=0; putchar(c); のところで if(j<20) putchar(c); j++; で、どうですか?
その他の回答 (1)
- keikyu2101
- ベストアンサー率32% (65/202)
出力した文字数を数える変数を宣言 int j; とか、 ゼロで初期化 j=0; putchar(c); をする前に20文字以下か判定 以下なら、こえたらしない j++; して処理した文字数を1つ増やす。 これでわかりますか?
お礼
申し訳ありません。正直分かりません。 for( j=0; j<=20; j++){ while((c = getchar()) != '\n') { for(i = 0; upper[i]; i++) { if(c == upper[i]) { c = upper[(i + 3) % 26]; break; } } } putchar(c); } とはやってみたのですが・・・。反対に何の反応も無し・・・。個人的にもう少しいじってみます。 ・・・もう少しアドバイスを頂けますか?
補足
忙しい中の回答ありがとうございます。 ・・・自信はないけどやってみます。
お礼
出来ました。ビッグな回答ありがとうございました。