qq_41525202 2020-03-20 18:48 采纳率: 0%
浏览 86

为什么我点加密,但是却直接跳出程序怎么办

#include
#include
#include

void jiami(){

char str[100];
 int  i,len=0;
 printf("请输入字符串:");
 gets(str);
 len=strlen(str);
 for(i=0;str[i]!='\0';i++){

    str[i]=255-str[i]; 
  }

}
void jiemi(){

char str[100];
 int  i,len=0;
 len=strlen(str);
 printf("解密后的字符串:");
 for(i=0;str[i]!='\0';i++){

    str[i]=255-str[i]; 
    printf("%c",str[i]);
  }

}

int main(){

char str[100];
int sign,flag=1;
while(flag){

printf("1、加密 2、解密 3、退出系统:\n");
scanf("%d",&sign);
switch(sign){

    case 1: jiami(); break;
    case 2: jiemi(); break;
    case 3: exit(1); break;

} 

}

}

图片说明

为什么没先输入字符串,而是直接继续选择输入的类型。

  • 写回答

2条回答 默认 最新

  • 青椒*^_^*凤爪爪 嵌入式领域新星创作者 2020-03-20 19:34
    关注

    你在输入选项为1的时候后面回车符并没有别scanf回收,而是还在缓存中,在你进行下次的gets(str);的时候,直接将回车符当做是输入完成的标志。所以在你进行gets(str);的时候应该先将缓存区中的垃圾字符(比如回车)等回收掉,可以使用getchar等。描述的不是很准确,但是就是那么问题

    评论

报告相同问题?

悬赏问题

  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题