C++ 将一个数组中的字符值赋给另一个数组中的字符值

C++ 将一个数组中的字符值赋给另一个数组中的字符值,c++,arrays,sizeof,strlen,C++,Arrays,Sizeof,Strlen,听起来很简单,但我有一个错误,我不知道是什么原因造成的 nopunccount = 0; char *ra = new char[sizeof(npa)]; while (nopunccount <= strlen(npa)) { ra[nopunccount] = npa[strlen(npa) - nopunccount]; nopunccount++; } nopuncount=0; char*ra=新的char[sizeof(npa)]; while(nopun

听起来很简单,但我有一个错误,我不知道是什么原因造成的

nopunccount = 0;
char *ra = new char[sizeof(npa)];
while (nopunccount <= strlen(npa)) {
    ra[nopunccount] = npa[strlen(npa) - nopunccount]; 
    nopunccount++;
}
nopuncount=0;
char*ra=新的char[sizeof(npa)];

while(nopuncountnpa的声明是什么样子的?如果它是指针,
sizeof(npa)
将是指针的大小,而不是分配的大小。如果它们是以零结尾的字符串(也称为“C字符串”),然后使用strlen
,而不是sizeof。如果这些不是字符串,则需要跟踪在单独的变量中分配了多少

我对这段代码还有其他一些批评,可能与您的问题无关

while (nopunccount <= strlen(npa)) {

这里也有同样的问题。

npa的声明是什么样子的?如果它是指针,
sizeof(npa)
将是指针的大小,而不是分配的大小。如果它们是以零结尾的字符串(也称为“C字符串”),然后使用strlen,而不是sizeof。如果这些不是字符串,则需要跟踪在单独的变量中分配了多少

我对这段代码还有其他一些批评,可能与您的问题无关

while (nopunccount <= strlen(npa)) {

这里也有同样的问题。

nopuncount
从0开始,因此在循环的第一次迭代中,分配给
ra[0]
的字符是
npa[strlen(npa)]
。这是该字符串的终止符
'\0'
。因此,
ra
中的结果字符串以
'\0'
开头,因此通常的字符串函数认为该字符串以该第一个字节结尾。

nopuncount
以0开头,因此在循环的第一次迭代中,分配给
ra的字符[0]
npa[strlen(npa)]
。这是该字符串的终止
'\0'
。因此,
ra
中的结果字符串以
'\0'
开头,因此通常的字符串函数认为它在第一个字节结束。

现在声明了
npa
了吗?什么是
strlen(npa)
?请发布工作代码。char*npa=new char[sizeof(str)];str被声明为函数的参数为(char*str)。这是一个问题:
sizeof(str)
将产生错误的结果(即,它将产生指针的大小,而不是字符串的长度!)。好的,你有什么建议吗?在处理字符串时总是使用
strlen
而不是
sizeof
。现在声明了
npa
?什么是
strlen(npa)
?请发布工作代码。char*npa=new char[sizeof(str)];str被声明为函数的参数(char*str这是个问题:
sizeof(str)
将产生错误的结果(即,它将产生指针的大小,而不是字符串的长度!)。好的一点,您有什么建议吗?在处理字符串时,始终使用
strlen
而不是
sizeof
。Groovy不知道字符串中间不能有空值,但这很有意义。谢谢:)一个空终止的字符串在定义的字符串的中间不能有一个null,因为null结束字符串…Groovy,不知道你不能有一个空值中间字符串,但是这是完全有意义的。谢谢:)一个空终止的字符串在定义的字符串中间不能有一个null,因为一个null结束字符串。