编写一个简单的字符串复印机,并在main()功能中对其进行测试。奇怪的是,有时程序会返回
“ HelloHello”
像它应该的那样,但是也许我每运行三次,该程序就会打印出来:
“你好!你好!▌▌▌▌▌▌▌▌▌▌▒”UòB╚”
为什么有时仅将垃圾数据的尾部添加到第二个字符串的末尾?
#include <iostream>
using namespace std;
int strlength(const char* c)
{
int size = 0;
while (*c) {
++c;
++size;
}
return size;
}
char* mystrdup(const char* c)
{
int size = strlength(c);
char* result = new char;
copy(c,c + size,result);
return result;
}
void print_array(const char* c)
{
int size = strlength(c);
while (*c) {
cout << *c;
++c;
}
}
int main()
{
char test[] = "Hello!";
char* res = mystrdup(test);
print_array(test);
print_array(res);
}