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



我正在尝试创建一个 Atbash 翻译器,Atbash 只是向后的字母表。例如,A 将等于 Z。但是 translate(( 函数只返回随机字母或符号。

我不确定问题是否出在我重新分配值时的逻辑上。变量反向应具有匹配字母的 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 textn");
    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;
}

您正在发送文本,但从未使用过文本

函数

中的字母变量被使用但从未初始化

最新更新