我目前正在学习如何通过颠倒句子来实现递归,我似乎无法理解char变量如何能够在不使用方括号或花括号的情况下存储字符串,以及它如何迭代到下一个字符

我是新手,我希望我的问题不会太简单而问不出来

#include <stdio.h>

void swap_recursion();

int main() {

    printf("Input a sentence: ");
    swap_recursion();

    return 0;
}

void swap_recursion(){
    char sentence;

    scanf("%c", &sentence);
    if (sentence != '\n'){
        swap_recursion();
        printf("%c", sentence);

    }

}

推荐答案

该字符串存储在堆栈上char sentence;的多个实例中.每次递归调用swap_recursion()都会在堆栈上生成一个新的char sentence;,并将输入中的一个字符存储在那里.堆栈不断堆积,直到遇到新行.此时,整个字符串都存储在堆栈上.然后,通过在每次回车时展开堆栈,以与读取字符相反的顺序打印每个字符.

C++相关问答推荐

有什么方法可以检测SunOS上的SparcWorks吗?

带双指针的2D数组

如何在不修改字符串缓冲区早期使用的情况下覆盖字符串缓冲区

括号中的堆栈实现错误问题

在#include中使用C宏变量

难以理解Makefile隐含规则

GLIBC:如何告诉可执行文件链接到特定版本的GLIBC

如何在不使用其他数组或字符串的情况下交换字符串中的两个单词?

为什么我不能只在内存地址中添加一个int来寻址任何数组?

从C文件中删除注释

搜索使用int代替time_t的用法

C-try 将整数和 struct 数组存储到二进制文件中

*S=0;正在优化中.可能是GCC 13号虫?或者是一些不明确的行为?

如何在不更改格式说明符的情况下同时支持双精度和长双精度?

生成一个半RNG,结果用C表示(无随机/随机)

在我的第一个C语言中观察到的错误';你好世界';程序

如何在C中计算包含递增和递减运算符的逻辑表达式?

struct 中的qsort,但排序后的 struct 很乱

从管道读取数据时丢失

为什么使用 C 引用这个 char 数组会导致 Stack smasing?