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

时间:2013-04-08 03:16:24

标签: 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;
}

2 个答案:

答案 0 :(得分:4)

您需要使用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++知道字符串结尾的位置。

阅读有关以空值终止的字符序列的更多信息:

答案 1 :(得分:0)

你可以通过2种方式解决这个问题 a)使用空字符初始化反向数组

char reversed[MAX_CHAR] = {0};

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

reversed[strlen(str)] = '\0';