Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么puts()在仅对某些值使用指针时具有随机尾随字符_C++ - Fatal编程技术网

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]
很好。您应该更改循环和空终止。