函数不返回期望值,printf不返回任何值

时间:2019-11-24 23:58:12

标签: c string debugging encryption printf-debugging

嗨,我是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, &notALetter);
    }
   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)));不会打印功能解码._。

的回调

谢谢!

编辑:

由于paulsm4,问题(2)得到解决

编辑2:

由于有了dbush,问题(1)得以解决。

0 个答案:

没有答案