c++不像我自己的字符串复制函数那样打印
C++ not printing as expected with my own string copy function
很抱歉又出现了一个字符串复制问题。但是我真的找不到为什么在我的代码中,strTo可以打印,但strFinal都不能。
cout << strTo << endl;
cout << strFinal << endl;
while (*strFinal != ' ') {
cout << *strFinal++;
}
如果有人能指出我对指针和数组的误解,我将不胜感激!谢谢!#include <iostream>
using namespace std;
char *str_copy (const char *strFrom, char *strTo)
{
while (*strFrom != ' ') {
*strTo++ = *strFrom++;
}
*strTo = ' ';
return strTo;
}
int main()
{
char strFrom[]="abc123";
char strTo[10];
char *strFinal = str_copy(strFrom, strTo);
cout << strTo << endl;
cout << strFinal << endl;
while (*strFinal != ' ') {
cout << *strFinal++;
}
return 0;
}
额外的问题:
我不知道为什么我把代码像这样放在main函数中:
char strFrom[]="abc123";
char strTo[10];
strTo = str_copy(strFrom, strTo);
然后编译器说:
main.cpp:18:错误:数组类型'char[10]'不可分配strTo = str_copy(strFrom, strTo);~ ~ ~ ~ ~ ^
我应该如何纠正这种方式?谢谢!
函数返回一个指向终止零的指针。
char *str_copy (const char *strFrom, char *strTo)
{
//...
*strTo = ' ';
return strTo;
}
按如下方式修改
char *str_copy (const char *strFrom, char *strTo)
{
char *p = strTo;
while ( *p++ = *strFrom++ );
return strTo;
}
我也会像标准C函数strcpy
一样声明它
char *str_copy( char *strTo, const char *strFrom );
至于你的附加问题,那么你可以不给数组分配指针甚至其他数组。因此编译器发出错误。
数组没有赋值操作符。你只能复制它们的元素。否则使用std::array
标准类
从str_copy
返回后,您的strTo不指向您复制的字符串的开始。在main
strTo
是可以的,因为它是通过值传递的(指针的地址从str_copy
返回后不会改变,即使你使用strTo++
)。但是strFinal
的返回值指向复制字符串的最后一个字符——' '
。
对于第二部分- char[10]有不可更改的地址,所以你不能给这种类型的变量分配任何东西,就像你在strTo = str_copy(...);
中尝试的那样。
你的第二个问题:你试图用char*传递char[10],这是不可能的
&strTo[0] = str_copy(strFrom, strTo);
但是这没有用,因为复制是在
在我们的代码中,调用str_copy()函数后:
char *strFinal = str_copy(strFrom, strTo);
strFinal
指向" ",它位于"abc123"的末尾。
strTo
可以正确显示,因为它不是同一个strTo
在str_copy()函数中,但指向strTo[10]。str_copy()中的strTo
仍然指向终止零。
- 如何使用重新定义的打印函数打印Lua表?
- 从函数打印 CLI 帮助消息后,我应该如何干净地退出 C++ 程序?
- 使用成员函数打印对象
- 函数打印输出C 的错误
- 函数打印奇怪的值.C++
- Std::copy 和 std::ostream_iterator 使用重载函数打印值
- C++ 通过函数打印出 2D 数组
- 使用模板函数打印智能指针矢量
- C 是否可以使用宏从称呼的地方进行类函数打印
- infix/postfix/prefix程序.想要使用我的printresult()函数打印结果.需要帮助获得输出
- 从 Main 中的双指针函数打印出指针数组
- 如何使用递归函数打印节点树
- 重载函数打印
- 尝试通过函数打印时"Garbage" 2D 数组中的值
- 如何通过包含要打印的字符串的类函数打印异常
- 从函数C++打印出 2D 数组
- 如何通过wprintf函数打印uint32_t变量值
- 为什么我的函数打印地址而不是数组的内容
- 为什么这个函数打印的是x而不是1
- 将函数打印到输出文件