我在大学笔记中找到了以下代码来反转 C 中的字符串。我不明白这个例子中的递归是如何工作的,因为它对我来说似乎很神奇!更具体地说,如果我输入单词“one”,程序会打印出单词“eno”。根据解释,该函数递归地从用户那里读取字符,直到用户按下Enter('\n'),然后打印出反转的单词。但是,如果函数最后一次递归调用自身是当用户按下 Enter 并且之后程序无法再次进入函数以调用printf时,如何打印单词?它是否使用某种缓冲区以及它是如何工作的?这是C源代码:
#include <stdio.h>
void readCharsAndReverse(void);
int main (void)
{
printf ("Give characters to reverse:");
readCharsAndReverse();
printf ("\n\n");
system("PAUSE");
}
void readCharsAndReverse(void)
{
char ch;
scanf ("%c", &ch);
if (ch != '\n')
readCharsAndReverse();
printf ("%c", ch);
}