-4

首先让我澄清一下,我不是大学生,这不是我的家庭作业。我只是想知道这个曾经问过我的问题的解决方案。我认为这是一个很好但很棘手的问题,我觉得值得分享。问题是——

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

我无法闯入这个。请帮忙

注意:成员将其标记为此问题的重复项。但是对此的所有答案要么使用库函数,要么使用指向 char array(char *) 的指针。在我的情况下,它们都不允许。请再次查看

4

2 回答 2

4

你可以试试递归。

void print_reverse_str() {
  int c = getchar();
  if (c != EOF) {
    print_reverse_str();
    putchar(c);
  }
}
于 2013-06-26T05:09:11.153 回答
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;
        }
}
于 2013-06-26T05:11:42.990 回答