c - 为什么我的 c 函数 translate() 返回随机符号?
问题描述
我正在尝试创建一个 Atbash 翻译器,Atbash 只是字母倒转。例如 A 等于 Z。但是 translate() 函数只返回随机字母或符号。
我不确定问题是否出在我重新分配值的逻辑上。变量 reverse 应该具有匹配字母的 atbash 值。
char translate(char text){
char letter;
char reverse;
letter = text;
char alphabet[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
char atbash[26] = {'Z','Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A'};
int x = 0;
int size = 26;
while(x <= size)
{
if(letter == alphabet[x])
{
reverse = atbash[x];
break;
}
x++;
}
return reverse;
}
int main(){
char text [100];
char translation [100];
int strSize, i;
printf("Hi! this is ATBASH translator.\n");
printf("Use CAPSLOCK to input text\n");
printf("ENTER TEXT: ");
scanf("%[^\n]", text);
strSize = strlen(text); //I removed the minus 1
for (i = 0; i < strSize; i++){
translation[i] = translate(text[i]);
}
printf("TRANSLATION: %s", translation);
return 0;
}
我想到了!!多谢你们!我扣除了字符串“text”的大小,这就是我无法获得最后一个字符的原因。
更新:我还没弄明白(我以为我弄明白了,哈哈)
我输入了 ABC,它返回了 ZYX,但是当我输入 ABCDE 时,它输出了 ZYXWV(这是正确的),但随之而来的是随机字符。就像这样:
ENTER TEXT: ABCDE
TRANSLATION: ZYXWVy`~?.|
解决方案
您正在发送文本,但从未使用过文本
推荐阅读
- lotus-domino - HCL Volt 服务到另一个 Notes 数据库
- c# - 如何使用 NAudio 减小文件大小/压缩 mp3 文件
- regex - 正则表达式匹配逗号之间的管道符号,之间没有字符串文本
- javascript - 如果函数在数组内部或外部,如何在重写 JSON.stringify 时使用递归并返回不同的值?
- amazon-web-services - 有没有办法以编程方式在其他区域创建别名提供程序和 AWS 资源?
- javascript - 有条件地在多选下拉列表中更改颜色
- javascript - Firebase Admin SDK 未按预期更新密码
- html - 为什么
元素改变它的高度? - php - 注销后尝试将用户发送到主页
- android - MotionLayout 与触摸区域块 RecyclerView