#include <stdio.h>

void caesar(char bemenet[], char eredmeny[], int n){
int i = 0;
    for(i = 0; bemenet[i] != '\0'; i++) {
        if(bemenet[i] == 'z') {
            eredmeny[i] = 'a';
            eredmeny[i] += n-1;
        }
        else
        {
            eredmeny[i] += n;
        }
    }
    eredmeny[i] = '\0';
}

int main(){
char tomb1[]="caesarkodolas";
char tomb2[]="";

caesar(tomb1,tomb2,1);

printf("%s \n",tomb2);

return 0;
}


我的“ eredmeny”(结果)是这样的:
“ dbftbslpepmb”,但是tomb2 =>☺dbftbslpepmb不好,因为我有多余的字符|☺| ..

最佳答案

首先,您应该具有足够大的tomb2来存储结果。

例如,如上所述

char tomb2[255] = {0};


你这里也有错误

else
{
    eredmeny[i] += n;
}


您必须将有效的ASCII值分配给eredmeny[i],因此将此字符串更改为

eredmeny[i] += bemenet[i] + n

同样,在数组上传递指针而不传递其大小通常也是不好的做法。容易导致缓冲区溢出。

关于c - 凯撒代码中C多余字母表示结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20219109/

10-10 14:37