当我试图在c++中反转cstring时,我得到了一堆额外的字符

I am getting a bunch of extra chars when i try to reverse a cstring in c++

本文关键字:字符 一堆 c++ cstring      更新时间:2023-10-16

用户输入的字符串似乎是反向的,但后面也跟着一堆垃圾字符。这是我的反向函数:

void reverse(char str[])
{
    char reversed[MAX_CHAR];
    for(int i = 0; i < strlen(str); i++)
    {
        reversed[i] = str[strlen(str) - i - 1];
    }
    cout << reversed << endl;
}

您需要以NULL字符'', ASCII值0结束您的字符串。

试试这个:

void reverse(char str[]) {
  char reversed[MAX_CHAR];
  int len = strlen(str);
  for(int i = 0; i < len; i++) {
    reversed[i] = str[len - i - 1];
  }
  reversed[len] = ''; // Add this
  cout << reversed << endl;
}

这就是CC++知道字符串结束的地方。

阅读更多关于以空字符结尾的字符序列:

  • http://www.cplusplus.com/doc/tutorial/ntcs/
  • http://en.wikipedia.org/wiki/Null-terminated_string

您可以通过以下两种方式解决此问题A)用空字符初始化反向数组

char reversed[MAX_CHAR] = {0};

b)在反向字符串的末尾添加空字符。

reversed[strlen(str)] = '';