当我运行以下程序时,我在str1和str2.So
中得到了垃圾值#include<iostream>
#include<string.h>
#include<string>
using namespace std;
int main()
{
int i,len,j=0,k=0;
char plain[15],cip[15],str1[10],str2[10];
cout<<"Enter Plain Text:";
cin>>plain;
cout<<endl;
len=strlen(plain);
for(i=0;i<len;i++)
{
if(i%2==0)
{
str1[j]=plain[i];
j++;
}
else
{
str2[k]=plain[i];
k++;
}
}
j=0;
cout<<"Str1:"<<str1<<endl<<"Str2:"<<str2;
}
输出:
答案 0 :(得分:2)
您的str1
和str2
未终止。将变量定义更改为str1[10]={},str2[10]={}
example。
答案 1 :(得分:2)
#include<bits/stdc++.h>
void encode(int num_rails,char plain_text[],char cipher_text[])
{
int i=0,j=0,k=0;
for(i=1;i<=num_rails;i++)
{
if(i==1||i==num_rails)
{
for(j=i-1;j<strlen(plain_text);j+=2*(num_rails-1))
{
cipher_text[k++]=plain_text[j];
}
}
else
{
cipher_text[k++]=plain_text[i-1];
for(j=i-1;j<strlen(plain_text);)
{
int x=0;
x++;
if(x%2==1)
{
j=j+2*(num_rails-i);
}
else
{
j=j+2*(i-1);
}
cipher_text[k++]=plain_text[j];
}
}
}
cipher_text[10]='\0';
}
void decode(int num_rails,char cipher_text[],char decrypt_text[],int length)
{
int i=0,j=0,k=0;
int y=strlen(cipher_text);
//printf("%d\n",y);
for(i=1;i<=num_rails;i++)
{
if(i==1||i==num_rails)
{
for(j=i-1;j<length;j+=2*(num_rails-1))
{
decrypt_text[j]=cipher_text[k++];
//printf("%d\n",j);
}
}
else
{
decrypt_text[i-1]=cipher_text[k++];
for(j=i-1;j<length;)
{
int x=0;
x++;
if(x%2==1)
{
j=j+2*(num_rails-i);
}
else
{
j=j+2*(i-1);
}
decrypt_text[j]=cipher_text[k++];
}
}
}
}
int main()
{
char plain_text[100],cipher_text[100],decrypt_text[100];
printf("ENTER PLAIN TEXT\n");
scanf("%s",plain_text);
int num_rails,i;
printf("ENTER NO OF RAILS\n");
scanf("%d",&num_rails);
int x=strlen(plain_text);
encode(num_rails,plain_text,cipher_text);
printf("CIPHER TEXT IS:");
for(i=0;i<=x;i++)
printf("%c",cipher_text[i]);
printf("\n");
printf("DECRYPTED TEXT IS:");
decode(num_rails,cipher_text,decrypt_text,x);
for(i=0;i<=x;i++)
printf("%c",decrypt_text[i]);
}
答案 2 :(得分:-1)
这是我的铁栅栏代码,更容易理解 https://cprograms4future.blogspot.in/p/list-of-all-c-programs.html?m=1
vector< vector<obj> >
答案 3 :(得分:-1)
它将文本加密到铁栅栏。我的代码中的逻辑采用字符串并将它们转换为ascii数字。如果你采用铁栅栏的逻辑,如果它的轨道为3.00,11,22,文本就会以这种方式存储,13,04,15,26,..这意味着行将在0-2和2-0之间切换,但列将始终增加。存储后,如果代码[]没有0,则将打印代码,因为我们已初始化它之前为零。我的代码将适用于所有条件。一旦尝试并删除不喜欢。如果你仍然不明白邮寄我mahidharguggilam123@gmail.com。所以我明天会发给你图像解释。
这是我在博客中所做的解释。如果您想访问我的博客,请访问https://cprograms4future.blogspot.in/p/encryption-rail-fence-cipher.html?m=1以获取此计划