c语言中加密程序的问题
我试图根据我已经定义的两个字符串加密用户编写的内容 该程序运行良好 但是当用户写入超过30个字符时,我遇到了一个问题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','
#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]