Oceanus 发表于 2020-3-4 13:51

C语言字符串输入

菜鸟向大佬们请教#include<stdio.h>
void ming_to_mi(char ming[],int count);
void mi_to_ming(char mi[], int count);
int main(){
        int i, count;
        char ming,mi;
        for(i = 0; i < 2; i++){
                if(i == 0){
                        printf("请输入需要加密的明文:");
                        gets(ming);
                        printf("请输入加密的偏移量:");
                        scanf("%d",&count);
                        printf("\n明文是:%s",ming);
                        ming_to_mi(ming,count);
                }else if(i == 1) {
                        char flag;
                        printf("\n是否要进行解密算法?(y/n)");
                        scanf("%s",flag);
                        if(flag == 'y'){
                                printf("----------解密算法----------\n");
                                printf("请输入已知的密文为:");
                                scanf("%s",mi);
                                gets(mi);
                                printf("请输入加密时的偏移量:");
                                scanf("%d",&count);
                                printf("\n密文是:%s",mi);
                                mi_to_ming(mi,count);
                        }else
                                break;
                }
        }
}
void ming_to_mi(char ming[], int count){
        char mi;
        int i;
        for(i = 0; i < 15; i++){
                if(ming){
                        if(ming == ' ')
                                mi = ' ';
                        else
                                mi = ming+count;
                }
                else
                        break;
        }
        printf("\n转换后的密文是:%s",mi);
}
void mi_to_ming(char mi[], int count){
        char ming;
        int i;
        for(i = 0; i < 15; i++){
                if(mi){
                        if(mi == ' ')
                                ming = ' ';
                        else
                                ming = mi-count;
                }else
                        break;
        }
        printf("\n原文是:%s",ming);
}
求凯撒密码的问题,为什么我的第二轮循环的gets()没有,被调用啊??直接就让我输偏移量?
我可以用scanf("%s",mi)输入,但是用gets(mi)就不行。

Oceanus 发表于 2020-3-4 13:55

第22行的scanf是调试的时候用的...粘上来的时候忘记注释了

苏紫方璇 发表于 2020-3-4 15:43

目测在scanf下面用getchar接收一下回车应该就可以了

古月不傲 发表于 2020-3-4 17:11

getchar一下就行

Oceanus 发表于 2020-3-5 12:02

苏紫方璇 发表于 2020-3-4 15:43
目测在scanf下面用getchar接收一下回车应该就可以了

感谢,已经解决了!

Oceanus 发表于 2020-3-5 12:02

古月不傲 发表于 2020-3-4 17:11
getchar一下就行

谢谢,已经解决了!
页: [1]
查看完整版本: C语言字符串输入