这是我的代码
#include<iostream>
#include<string>
using namespace std;
char* getString(char*& s)
{
string str;
getline(cin, str);
int length = str.length();
s = (char*)malloc(length);
for (int i = 0; i < length; ++i)
s[i] = str[i];
return s;
}
void main()
{
char* s;
getString(s);
cout << s << endl;
}
在我的getString()
函数中,我创建了一个字符串str
,并将输入字符串传递给它。然后我计算str
的长度,然后为字符数组s
分配这个字节数。但问题是,当我调用strlen(s)
时,返回值不等于字符串str
的长度,所以当我将s
打印到控制台时,它不是我想要的字符串。有人能告诉我为什么并解释更多吗??
您需要比str.length()
多分配一个字符,以允许终止字符串的null字符,并且您需要将该字符设置为null字符。
当您有一个字符数组时,最后一个字节被称为空终止符,在这种情况下是