【发布时间】:2026-02-20 06:10:01
【问题描述】:
我正在尝试根据我已经定义的 2 个字符串加密用户写的内容
程序运行良好
但是当用户写超过 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();
}
例如当用户写入 ((( ALNOR ALNOR ))) 时输出为 (((kFUPM kFUPM )))
但是当我写 ((( ALNOR ALNOR ALNOR ALNOR ALNOR ))) 时,输出应该是 ((( kFUPM kFUPM kFUPM kFUPM kFUPM ))) 但出现的是 ((((kFUPM kFUPM kFUPM kFUPM kFUPM H&M)))
我不知道 H&M 是从哪里来的,当我再次运行它时,H&M 链接到其他东西
???!!!
【问题讨论】:
-
在打印之前在解密的字符数组末尾添加一个 '\0'
-
明明是
C,你为什么把它标记为C++? -
char new[120] = {0}; -
如果您尝试将其编译为 C++,您会看到一个愤怒的编译器...
char new[120]new??
标签: c