gpt4 book ai didi

c - 递归变量

转载 作者:行者123 更新时间:2023-11-30 20:30:53 26 4
gpt4 key购买 nike

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

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

#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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com