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结束字符串。