请问调用函数的输入无法使用直接被跳过?


#include <stdio.h>
#include <string.h>
#include <math.h>
#define N 100
void move();
void encrypt();
void decode();
void change();
void disorganize();
void group();
void transition();
void different();

int main(){
    int choice;
    printf("请选择加密或者解密(加密1,解密2):");
    scanf("%d", &choice);
    if (choice == 1){
        encrypt();
    }
    if (choice == 2){
        decode();
    }
    else
        printf("输入错误,请重新输入");
    return 0;
}


void encrypt(){
    int i, t, move;
        char passwd[N];
    printf("请输入要加密的信息:\n");
    fflush(stdin);
    gets(passwd);
    printf("请输入密钥(1~25):\n");
    scanf("%d%*c", &move);
    t = strlen(passwd);//求字符串的长度
    for (i = 0; i <= t; i++)
    {
        if (passwd[i] >= 'a' && passwd[i] <= 'z')
        {
            passwd[i] = ((passwd[i] - 'a') + move) % 26 + 'a';
        }
        else if (passwd[i] >= 'A' && passwd[i] <= 'Z')
        {
            passwd[i] = ((passwd[i] - 'A') + move) % 26 + 'A';
        }
    }
    printf("%s\n", passwd);
}

void decode(){
    int j, t, move;
       char passwd2[N];
    printf("请输入要解密的信息:\n");
    fflush(stdin);
    gets(passwd2);
    printf("请输入密钥(1~25):\n");
    scanf("%d%*c", &move);
    t = strlen(passwd2);//求字符串的长度
    for (j = 0; j <= t; j++)
    {
        if (passwd2[j] >= 'a' && passwd2[j] <= 'z')
        {
            passwd2[j] = (('z' - ('z' - passwd2[j]) + move) % 26);
        }
        else if (passwd2[j] >= 'A' && passwd2[j] <= 'Z')
        {
            passwd2[j] = (('Z' - ('Z' - passwd2[j]) + move) % 26);
        }
    }
    printf("%s\n", passwd2);
}

img

你调用两个函数的时候没有传递参数啊。编译应该也通不过啊。函数申明是无参的,函数实现是带参数的。编译没报错?
把函数参数去掉,把当前函数参数定义为全局变量,在第12行插入全局变量char passwd2[N];

  1. encrypt, decode两函数的定义和实现有问题吧,如函参?
  2. 函数中,i <= t j <= t,这是不正确的吧?