Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c语言中加密程序的问题_C - Fatal编程技术网

c语言中加密程序的问题

c语言中加密程序的问题,c,C,我试图根据我已经定义的两个字符串加密用户编写的内容 该程序运行良好 但是当用户写入超过30个字符时,我遇到了一个问题 #include<stdio.h> #include<string.h> main() { char read [120] ; char Encryption [55] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','

我试图根据我已经定义的两个字符串加密用户编写的内容

该程序运行良好

但是当用户写入超过30个字符时,我遇到了一个问题

#include<stdio.h>
#include<string.h>

main()
  {

  char  read [120] ;
  char  Encryption [55] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  char  Decryption [55] = {'k','K','f','z','L','S','j','T','v','u','B','F','q','U','P','h','n','M','i','Z','w','x','y','Y','W','t','m','s','N','J','Q','E','G','l','X','a','A','c','b','C','e','o','D','H','I','r','d','R','V','p','p','g'};
  char  new[120];
  int i , k;

  gets(read);

  for (i=0 ; i<strlen(read) ; i++)
  {
     for(k=0 ; k<strlen(Encryption) ; k++){
             if (read[i]==' ')  new[i]=' ';
             else if (read[i] ==  Encryption[k]){
                         new[i]=Decryption[k];}
                         }
             }


     puts(new);
     getch();

  }
在加密结束时,有时程序会出现随机字符

#include<stdio.h>
#include<string.h>

main()
  {

  char  read [120] ;
  char  Encryption [55] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  char  Decryption [55] = {'k','K','f','z','L','S','j','T','v','u','B','F','q','U','P','h','n','M','i','Z','w','x','y','Y','W','t','m','s','N','J','Q','E','G','l','X','a','A','c','b','C','e','o','D','H','I','r','d','R','V','p','p','g'};
  char  new[120];
  int i , k;

  gets(read);

  for (i=0 ; i<strlen(read) ; i++)
  {
     for(k=0 ; k<strlen(Encryption) ; k++){
             if (read[i]==' ')  new[i]=' ';
             else if (read[i] ==  Encryption[k]){
                         new[i]=Decryption[k];}
                         }
             }


     puts(new);
     getch();

  }
例如,当用户写入ALNOR ALNOR输出为kFUPM kFUPM时

但是,当我写ALNOR ALNOR ALNOR ALNOR ALNOR ALNOR ALNOR ALNOR ALNOR时,输出应该是kFUPM kFUPM kFUPM kFUPM kFUPM kFUPM,但什么是kFUPM kFUPM kFUPM kFUPM kFUPM H&M

我不知道H&M从哪里来,当我再次运行它时,H&M会链接到其他东西


如“Drax”所示,代码需要正确终止“new”字符串。也许可以在for循环后插入一行:

  for (i=0 ; i<strlen(read) ; i++)
  {
     for(k=0 ; k<strlen(Encryption) ; k++){
             if (read[i]==' ')  new[i]=' ';
             else if (read[i] ==  Encryption[k]){
                         new[i]=Decryption[k];}
                         }
             }
  }

  new[i] = '\0';

在打印之前,在解密字符数组的末尾放置一个‘0’,当你把它标记为C++时,为什么它是C?char新的[120 ]={ 0 };如果你试图把它编译成C++,你会看到一个愤怒的编译器…新字符[120]