C++ 为什么puts()在仅对某些值使用指针时具有随机尾随字符
这是密码 我知道我做错了什么,但我不能确切地说出到底是什么C++ 为什么puts()在仅对某些值使用指针时具有随机尾随字符,c++,C++,这是密码 我知道我做错了什么,但我不能确切地说出到底是什么 #包括 int main() { int n=8; char*string=新字符[n]; 对于(int i=0;i知道多少字符要打印?为什么希望这样做?没有指针[n]。最后一个有效的数组元素是pointer[n-1]@PaulOgilvie该代码刚刚被编辑以更正它。我不喜欢这样新字符[n]很好。您应该更改循环和空终止。
#包括
int main()
{
int n=8;
char*string=新字符[n];
对于(int i=0;i
对于n<8,我没有遇到任何问题
n=7的输出
。
然而,当我将n增加到7以上时,它开始出错。
当运行多次时,最后一个字符会发生变化,这里我用“A”表示
n=8,9,10,11的输出
X☺A
#########☺A
A
。
这让人困惑,所以我写了一个一般案例。n0->100。我还是不明白发生了什么
如果您知道如何修复我的代码,以及为什么会发生这种情况,我们将不胜感激。您需要一个尾随“\0”,并且缓冲区必须有空间容纳它 代码应为:
#包括
int main()
{
int n=8;
字符*指针=新字符[n+1];
对于(int i=0;i 你知道“字符串”的定义是什么,它是如何与字符数组不同的?这是C++,不是C。不确定的行为是发生了什么。我想更好的问题是:你希望代码>放/代码>知道多少字符要打印?为什么希望这样做?没有指针[n]
。最后一个有效的数组元素是pointer[n-1]
@PaulOgilvie该代码刚刚被编辑以更正它。我不喜欢这样<代码>新字符[n]
很好。您应该更改循环和空终止。