gpt4 book ai didi

c - 为什么我的 c 函数 translate() 返回随机符号?

转载 作者:行者123 更新时间:2023-11-30 16:19:04 25 4
gpt4 key购买 nike

我正在尝试创建一个 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`~?.|

最佳答案

我认为你的比较逻辑有问题。更新的就是这个。

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;
}

关于c - 为什么我的 c 函数 translate() 返回随机符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55713355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com