簡體   English   中英

凱撒密碼C程序無法正常工作

[英]Caesar Cipher C program not working

我有一個正在使用的凱撒密碼程序,它涉及將消息中的每個字母替換為另一個字母,該字母在字母表中的后面位置固定。 此外,它忽略數字和空格。 但是,無論我嘗試什么,該程序都會立即終止。 這是我到目前為止所擁有的;

#include <stdio.h>

char encrypt(char in, int key)
{
    while(in != '\n')
{
    if(in >= 'A' && in <= 'Z')
    {
        ((in-'A') + key) % 26 + 'A';
        printf("%s", in);
    }
        else if(in >= 'a' && in <= 'z')
    {
        ((in-'a') + key) % 26 + 'a';
        printf("%s", in);
    }
}
return 0;
}

int main()
{
int key;
String phrase;
char ch;

printf("Enter shift amount (1-25):\n");
scanf("%d ", &key);

printf("Enter message to be encrypted:\n");
scanf(
encrypt(in, key);
return 0;
}

有很多問題。

主要問題是,您正在混合使用char和短語的加密。 您應該將問題分解為幾個子問題。

  • 問題1:加密單個字符
  • 問題2:加密一個短語,包括加密該短語的每個字符:

工作解決方案:

#include <stdio.h>

char encryptchar(char in, int key)
{
  if (in >= 'A' && in <= 'Z')
  {
      in = ((in-'A') + key) % 26 + 'A';
  }
  else if(in >= 'a' && in <= 'z')
  {
      in = ((in-'a') + key) % 26 + 'a';
  }

  return in;
}


void encryptphrase(char phrase[], int key)
{
  int i = 0;
  char c ;
  while (c = phrase[i])
  {
    c = encryptchar(c, key);
    phrase[i] = c;
    i++;
  }
}


int main()
{
  int key;
  char phrase[100];

  printf("Enter shift amount (1-25):\n");
  scanf("%d", &key);

  printf("Enter message to be encrypted:\n");
  scanf("%s", phrase);
  encryptphrase(phrase, key);
  printf("%s\n", phrase);
  return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM