如何在C中的铁路围网密码中以Z字形形式显示数组?

时间:2018-07-26 12:47:44

标签: c encryption

我有此代码用于加密铁路围网密码。如何以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();
}

0 个答案:

没有答案