[number]-F出现在字符串末尾

[number]-F appearing at the end of String?

本文关键字:字符串 number      更新时间:2023-10-16

我是c++的新手,在一个星期天凌晨1点,我正在一起屠杀一个回文程序,因为!我遇到了这个问题:

输入:测试反向:tset3-F

3-F从哪里来?有时它只是-F或另一个数字-F。这是从哪里来的?

这是我的代码:

 #include <iostream>
 #include <string>

 using namespace std;
int main() {
 string eString;
 int length;
 int counter = 0;
 cout << "Enter String: ";
 cin >> eString;
 length = eString.length();

 char reverseChar[length];


  for(int x = eString.length() -1; x > -1; x--) {
     reverseChar[counter] = eString[x];
     counter++;
 }
 cout << "Reverse: " << reverseChar;

  }

非常感谢您抽出时间。

您不会在字符串末尾添加null终止符。这是内存中的随机数据。

reverseChar在中的长度应为+1

最终字符应设置为"\0"

reverseChar[length]="\0";

请参阅:http://en.wikipedia.org/wiki/Null-terminated_string

您需要在reverseChar字符串中添加一个null终止符。C中所有字符串的最后一个字符后面有一个0,它告诉字符串操作函数字符串在内存中的结束位置。长度中从不包含0,因此在为字符串分配空间时,必须记住为其添加空间。

char reverseChar[length + 1]; 
for(int x = eString.length() -1; x > -1; x--) { 
     reverseChar[counter] = eString[x]; 
     counter++; 
} 
reverseChar[length] = 0;

我认为:char reverseChar[length+1]因为您需要为字符串结尾分隔符reverseChar[length]='\0'