C语言问题,为什么这个函数我写了两个get,为什么在运行时只输入一个就是了,为什么?

void DES_USE_E(void)
{
int output[64]={0};
char MIN[9]={0};
char MI[9]={0};
printf("**********基于DES加密、解密软件实现**********\n");
printf("\n请输入需要加密的明文:\n");
gets(MIN);
printf("\n请输入加密密钥:\n");
gets(MI);
DES_Efun(MIN,MI,output);
printf("加密密文:\n");
for(int i=0;i<64;i++)
{
printf("%2d",output[i]);
if((i+1)%8==0)
printf("\n");
}
printf("\n");

printf("解密结果\n");
DES_Dfun(output,MI,MIN);
printf("解密明文为:\n");
for( i=0;i<8;i++)
{
printf("%c",MIN[i]);
}
printf("\n");
}

一是:大小的原因可能asdfgag\n 可能超过之后不行了,第一个可能就是字符数组不是字符串吧,,这个我也没试过,,第二个就是ag\n
二是:建议在第二个get前用fflush(stdin)头文件:stdio.h 清除缓冲区数据的,,,
另外加密用 异或 b=file^password (加密) file=b^password (解密)
更方便简单,,,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-25

缓冲区可能有未读取的换行,

在第一个gets前面添加

fflush(stdin);

即可

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网