如何在不使用数组或任何库函数(任何反转功能)的情况下反转用户输入?

时间:2013-06-26 05:03:46

标签: c++ c

首先让我告诉你我不是大学生,这不是我的家庭作业。我很想知道曾经问过我的这个问题的解决方案。我认为这是一个非常棘手的问题,我觉得值得分享。问题是 -

如何从用户输入字符串(一般意义上说,与编程无关),并在不使用数组或任何库函数来反转用户输入的情况下在C / C ++中打印它的反向?

我无法打破这一点。请帮忙

注意:会员将其标记为this问题的副本。但所有答案都是使用库函数或使用指向char数组的指针(char *)。在我的情况下,他们都不被允许。请再次查看

2 个答案:

答案 0 :(得分:4)

您可以尝试递归。

void print_reverse_str() {
  int c = getchar();
  if (c != EOF) {
    print_reverse_str();
    putchar(c);
  }
}

答案 1 :(得分:0)

从技术上讲这是不可能的,因为字符串是c中的char数组和表示c ++中char数组的对象。

我希望你的意思是不直接使用数组。

所以试试这个基于指针的解决方案:

void strrev(char *str)
{
        if( str == NULL )
                return;

        char *end_ptr = &str[strlen(str) - 1];
        char temp;
        while( end_ptr > str )
        {
                temp = *str;
                *str++ = *end_ptr;
                *end_ptr-- = temp;
        }
}