#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int count=0;
int main(){
int n;
scanf(" %d",&n);
char *s = (char *)malloc(10240 * sizeof(char));
scanf(" %s",s);
int length=strlen(s);
char array[length+1];
int k;
scanf(" %d",&k);
while(*s!='\0')
{
char a= *s + k;
if(a>90 && *s<=90)
{
a=65+(k-1);
array[count]=a;
}
else if(a>122 && *s<=122)
{
a=97+(k-1);
array[count]=a;
}
else if (a >=0 && a<=64)
{
array[count]=a;
}
else if(a>=123 && a<=126)
{
array[count]=a;
}
count++;
s++;
}
array[count+1]='\0';
printf("%s",array);
return 0;
}
以下のコードでは、暗号化されていない各文字は、アルファベット順にリストされた後に「k」スペースを含む文字に置き換えられます。アルファベットは大文字と小文字を区別し、循環的であると考えてください。 'k'がアルファベットの最後を過ぎて回転すると、それは最初にループします(すなわち、 'z'の後の文字は 'a'、そして 'Z'の後の文字は 'A'です)。シーザー暗号暗号アルゴリズムの出力としてガベージ文字を与える以下のコードは何ですか?
私は間違っているところに行くことができません。文字の可能な入力シーケンスごとにnullを印刷しています。特殊記号は暗号化された文字列では変更されません。
['malloc()'と家族の戻り値を 'C'にキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/) 605845/2173917)。 –
...特に ''を含んでいないので、 'malloc'を正しく使うためには必須です。そして関連して、あなたの 'array []'は小さすぎます。ターミネータのためのスペースを残さないでください。 –
WhozCraig
私はそれを含めるとしても、出力が変更されることはありません。 – stackuser