首页 > 解决方案 > 递归变量

问题描述

我刚刚开始使用递归,我想将一个在函数中声明的变量传递给 main。

这是帮助您更好地理解它的代码:

#include <stdio.h>

void InvertString(char string[200], char *inverted) {
  if (*string != '\0') {
    InvertString(string+1, inverted);
  }
  *inverted = *string;
}

int main(int argc, char const *argv[]) {
  char string[200];
  char inverted;
  int i;
  printf("Give me a phrase: ");
  gets(string);
  printf("Tu frase invertida es: ");
  InviertString(string, &inverted);
  printf("%c", inverted); /* Here I'm tring to print "inverted", but i don't know how to pass that variable to the main */
  printf("\n");
}

谢谢您的帮助。

那这个呢?

#include <stdio.h>
#include <string.h>
void InvierteFrase(char cadena[200]) {
  if (*cadena != '\0') {
    InvierteFrase(cadena+1);
  }
  printf("%c", *cadena);
}

int main(int argc, char const *argv[]) {
  char cadena[200];
  char invertido[200];
  int i;
  printf("Dame una frase: ");
  gets(cadena);
  printf("Tu frase invertida es: ");
  InvierteFrase(cadena);
  printf("%c", &cadena);
  printf("\n");
}

标签: c

解决方案


解决了:

#include <stdio.h>
#include <string.h>
void InvierteFrase(char cadena[200]) {
  if (*cadena != '\0') {
    InvierteFrase(cadena+1);
  }
  printf("%c", *cadena);
}

int main(int argc, char const *argv[]) {
  char cadena[200];
  char invertido[200];
  int i;
  printf("Dame una frase: ");
  gets(cadena);
  printf("Tu frase invertida es: ");
  InvierteFrase(cadena);
  for(i=0;i>=strlen(cadena);i++){
  printf("%c", cadena[i]);
  }
  printf("\n");
}

推荐阅读