嗨,我是 C 新手,但不是编程新手(只有 Python 和 JS 等高级语言的经验)。
在我的 CS 作业中,我必须实现一个对加密字符串进行解码的函数。(使用的加密是 atbash)
我想给解码函数一个编码的字符串并接收一个解码的字符串。我通过打印出字符串的每个解码字符来测试我的函数并且它有效。
但是我在实现函数的原始任务时遇到问题(编码 str -> 解码 str)
这是我的代码:
#include <stdio.h>
#include <string.h>
/*******************/
// atbash decoding function
// recieves an atbash string and returns a decoded string.
char *decode(char *str){
int i = 0;
char decodedString[1000];
strcpy(decodedString, "\n");
while(str[i] != '\0') {
if(!((str[i] >= 0 && str[i] < 65)||(str[i] > 90 && str[i] < 97)||(str[i] > 122 && str[i] <=127))){
if(str[i] >= 'A' && str[i] <= 'Z'){
char upperCaseLetter = 'Z'+'A'-str[i];
strcat(decodedString, &upperCaseLetter);
}
if(str[i] >= 'a' && str[i] <= 'z'){
char lowerCaseLetter = 'z'+'a'-str[i];
strcat(decodedString, &lowerCaseLetter);
}
}
if(((str[i] >= 0&& str[i] < 65)||(str[i] > 90 && str[i] < 97)||(str[i] > 122 && str[i] <= 127))){
char notALetter = str[i];
strcat(decodedString, ¬ALetter);
}
i++;
}
printf("%s\n", decodedString); // Debug: Checking what I would receive as a return, expected "Hello World!", got binaries
return decodedString;
}
int main(){
char *message = "Svool Dliow!";
printf("This is the decode String:\n%s",(decode(message))); //Expected return of "This is the decode String:\nHello World!", received "This is the decode String:\n" instead
return 0;
}
问题:
(1)
我在调试注释中收到一些二进制文件,而不是字符串(“Hello World!”)。
(2)
我不明白为什么 printf("\n%s", (decoded(message))); 不打印函数 decode ._ 的回调。
提前致谢!
编辑:
感谢 paulsm4 解决了问题 (2)
编辑2:
由于 dbush,问题 (1) 得到了解决。