c - 递归变量

标签 c

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

下面的代码可以帮助您更好地理解它:

#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");
}

最佳答案

main 中,您声明一个名为 invertedchar 类型变量 - 它只能容纳一个字符。然后,您将其作为指向函数的指针传递,并尝试将其用作字符串,但这是行不通的。

相反,您可以将其声明为字符数组,与声明字符串的方式大致相同

char inverted[200];

...然后更改调用函数的方式并传入 inverted 因为它现在是一个字符串。

InvertString(string, inverted);

然后您可以像字符串一样打印它

printf("%s", inverted);

您的递归函数不起作用,因为您从未更改inverted的值。您可能想要的是 inverted 指向反转字符串的末尾并向后跟踪。

大致如下:

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

int main(int argc, char const *argv[]) {
  char string[200];
  char inverted[200] = { 0 };
  int i;
  printf("Give me a phrase: ");
  fgets(string,200,stdin);
  printf("Tu frase invertida es: ");
  InvertString(string, inverted+strlen(string)-1);
  printf("%s", inverted); /* Here I'm tring to print "inverted", but i don't know how to pass that variable to the main */
  printf("\n");
}

关于c - 递归变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53013029/

相关文章:

c - 如何正确访问此结构中的指针?

c - 声明原子指针与指向原子的指针

c - 如何将从文本文件读取的整数传递到结构函数中?

C链表指针问题

c - 为什么这个整数会自己递减?

c - 任务: describe what the following C program does?

来自文字 Splint 的 C 字符警告不兼容的类型

c - 用C读写二进制文件?

c - 无法读取迷宫字符并将其放入二维数组

c++ - 在 g++ 中使用 __attribute__ 的不平衡括号