Онлайн компилятор C

#include <stdio.h> void reverse_string(void){ char c; scanf("%c", &c); if ( c== '.'){ return; } reverse_string(); printf ("%c",c); } int main() { reverse_string(); return 0; }
这段代码的功能是:从输入中读取字符,遇到句点 '.' 时停止,然后逆序输出之前读取的所有字符(不包括句点本身)。它通过递归实现:每次递归调用先读取下一个字符,等递归返回后再打印当前字符,从而实现了逆序效果。

- 注意递归的终止条件:当读取到 '.' 时,函数直接返回,不再继续递归,也不打印 '.'。但这里有一个潜在问题:如果输入中没有 '.',递归会无限进行下去,最终导致栈溢出。
- 另外,scanf 读取字符时可能会受到输入缓冲区中换行符的影响,比如在输入完字符后按回车,换行符会被当作一个字符读入,这可能导致意外的行为。