我有此代码用于加密铁路围网密码。如何以Z字形显示字母数组(这取决于我要输入的键数)。然后我将通过文本开头z0:
将其标记为锯齿形,并对其进行递增(取决于键的数量)。
我是否使用二维数组来获得结果?如果是这样,请提供帮助。我是C编程语言的新手。到目前为止,我只尝试加密。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
/* variable declaration */
int i=0; int j=0; int length=0; int key=0; int count=0;
int code[100][100];
char str[1000];
printf("=====================================\n");
printf("Rail Fence Cipher\n");
printf("=====================================\n");
printf("Enter a plain text:");
scanf("%[^\n]s",&str);
length=strlen(str);
printf("Enter key:");
scanf("%d",&key);
printf("=====================================");
printf("\nCipher Text:");
/* Two dimensional array for key and length of plain text */
for(i=0;i<key;i++)
{
for(j=0;j<length;j++)
{
/* result for two dimensional array */
code[i][j]=0;
}
}
count=0;
j=0;
while(j<length)
{
/* traverse text and compile in zig zag form */
if(count%2==0)
{
for(i=0;i<key;i++)
{
/* result for two dimensional array */
code[i][j]=(int)str[j];
j++;
}
}
else
{
for(i=key-2;i>0;i--)
{
code[i][j]=(int)str[j];
j++;
}
}
count++;
}
for(i=0;i<key;i++)
{
for(j=0;j<length;j++)
{
if(code[i][j]!=0)
{
printf("%c",code[i][j]);
}
}
}
getch();
}