電子書籍の厳選無料作品が豊富!

忙しい中失礼します。
先程質問したものですが、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;
}

A 回答 (2件)

int c, i;


のところで、
int c, i,j=0;

putchar(c);
のところで
if(j<20) putchar(c);
j++;

で、どうですか?
    • good
    • 0
この回答へのお礼

出来ました。ビッグな回答ありがとうございました。

お礼日時:2007/11/13 18:46

出力した文字数を数える変数を宣言


int j;
とか、
ゼロで初期化
j=0;

putchar(c);
をする前に20文字以下か判定
以下なら、こえたらしない

j++;

して処理した文字数を1つ増やす。

これでわかりますか?

この回答への補足

忙しい中の回答ありがとうございます。
・・・自信はないけどやってみます。

補足日時:2007/11/13 18:00
    • good
    • 0
この回答へのお礼

申し訳ありません。正直分かりません。
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);
}
とはやってみたのですが・・・。反対に何の反応も無し・・・。個人的にもう少しいじってみます。
・・・もう少しアドバイスを頂けますか?

お礼日時:2007/11/13 18:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!