就很玄学,不知道上次的错出在哪里了,重新写了一遍然后又过了,好吧有点奇怪的样子

#include<stdio.h>
#include<string.h>
char key[1005],str[1005];
bool vis[1005];
int count,tmp;
int main(){
    while(scanf("%s %s",key,str)!=EOF){
        count=0;
        memset(vis,0,sizeof(vis));
        for(int i=0;key[i]!=0;i++){
            if(key[i]>='a'&&key[i]<='z'){
                tmp=key[i]-'a';
            }else{
                tmp=key[i]-'A';
            }
            if(vis[tmp]==0){
                key[count++]=tmp+'a';
                vis[tmp]=1;
            }
        }
        for(int i=0;i<26;i++){
            if(vis[i]==0){
                key[count++]='a'+i;
            }
        }
        for(int i=0;i<strlen(str);i++){
            if(str[i]>='a'&&str[i]<='z'){
                str[i]=key[str[i]-'a'];
            }else{
                str[i]=key[str[i]-'a']-32;
            }
        }
        printf("%s\n",str);
    }
    return 0;
}