簡體   English   中英

如何在不使用數組或任何庫函數(用於反轉的任何函數)的情況下反轉用戶輸入?

[英]How to reverse a user input without using array or any library function(any function for reversing)?

首先讓我澄清一下,我不是大學生,這不是我的家庭作業。 我只是想知道曾經問過我的這個問題的解決方案。 我認為這是一個很好且棘手的問題,我覺得值得分享。問題是——

你如何從用戶輸入一個字符串(一般意義上說,獨立於編程)並在 C/C++ 中打印它的反轉而不使用數組或任何庫函數來反轉用戶輸入?

我無法打破這一點。 請幫忙

注意:成員將其標記為此問題的重復項。 但是對此的所有答案都是使用庫函數或使用指向 char array(char *) 的指針 在我的情況下,他們都不允許。 請再次檢查

你可以試試遞歸。

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

從技術上講,這是不可能的,因為字符串在 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;
        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM