c++ - 当我尝试在 C++ 中反转字符串时,我得到了一堆额外的字符

标签 c++ reverse cstring

用户输入的字符串看似颠倒了,但后面还跟着一堆乱码。这是我的反向函数:

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 字符 '\0' 结束,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] = '\0'; // Add this

  cout << reversed << endl;
}

这就是 CC++ 知道字符串结尾位置的方式。

阅读更多关于 Null 终止字符序列的信息:

关于c++ - 当我尝试在 C++ 中反转字符串时,我得到了一堆额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15870702/

相关文章:

javascript - keydown 上的反转图像 - Javascript

c++ - 这个奇怪的复制构造函数错误在提示什么?

arrays - 有没有最快的方法来反转由两种类型的元素组成的数组中元素的范围?

c++ - Xcode 5 'forgetting' 头文件..?

C 反转文件中的行顺序

C 堆栈分配的字符串作用域

使用 tolower 时 c++ 字符串的 c++ 格式错误

c++ - 使用 std::strings 和 c 风格的字符串时如何使用模板?

C++:状态和控制模式

c++ - C/C++ - Mac OS X - 检查文件是否存在