#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/