C++ 程序输出奇怪的字符

C++ 程序输出奇怪的字符,c++,pointers,c-strings,C++,Pointers,C Strings,我的程序正确地输出了4个值,但在其中一些值上添加了奇怪的字符。我做错了什么 我不确定问题是在复制功能还是打印功能中 这是我的复制功能(我必须自己编写): 这是我的打印功能: void printAllData(RentalAgency *agencies){ RentalAgency *agencies_ptr = agencies; for(int i = 0; i < 3;i++,*(agencies_ptr++)){ cout << ag

我的程序正确地输出了4个值,但在其中一些值上添加了奇怪的字符。我做错了什么

我不确定问题是在复制功能还是打印功能中

这是我的复制功能(我必须自己编写):

这是我的打印功能:

void printAllData(RentalAgency *agencies){

    RentalAgency *agencies_ptr = agencies;
    for(int i = 0; i < 3;i++,*(agencies_ptr++)){
        cout << agencies_ptr->name << " ";
        for(int j = 0; j < 5;j++){
            cout << *(agencies_ptr->zipcode+j);
        }
        cout << endl;

        RentalCar *inv_ptr = agencies_ptr->inventory;
        for(int j = 0;j < MAX_CARS;j++,++inv_ptr){
            cout << inv_ptr->getYear() << " ";
            cout << inv_ptr->getMake() << " ";
            cout << inv_ptr->getModel() << " ";
            cout << inv_ptr->getPrice() << " ";
            cout << boolalpha << inv_ptr->getAvailability() << endl;
        }
        cout << endl;
    }
    }
RentalArray[2]
的预期输出为:

Alamo 89502
2011 Toyota Rav4 $65.02 true
2012 Mazda CX5 $86.75 true
2016 Subaru Outback $71.27 false
2015 Ford F150 $112.83 true
2010 Toyota Corolla $50.36 true
但它却输出:

Alamo 89502
2011 ToyotaN Rav4 65.02 true
2012 Mazda CX5  86.75 true
2016 Subaru Outback 71.27 false
2015 FordÉ F15 112.83 true
2010 ToyotaÅ Corolla 50.36 true

仔细看这一行:

destination = *source;
…看看有没有什么不对劲。有点……不对称。如果您没有立即看到它,那么在启用所有警告的情况下编译可能会有所帮助

完成后,您可能还想看看:

*source++;

…并思考它的作用,以及它是否是您真正想要在这里执行的操作。

当它在源字符串中点击一个
\0
时,复制函数停止,这意味着它复制所有内容,但不包括
\0
终止符。

也许您应该修改函数myStrCopy:

assert(destination!=NULL && source!=NULL);  
char* dest=destination;
while((*dest++=*source++) != '\0')
;
return destination;

请提供完整的代码。在源字符串的最后一个字母之后,最简单的停止方法是什么?看看你是否能自己找到答案。如果我告诉你怎么做,你会学到更多。如果我自己做,我会用
\0
填充c字符串,填充它们,然后在遍历数组时检查
\0
,但是我知道这不是最有效的方法。
*source++;
assert(destination!=NULL && source!=NULL);  
char* dest=destination;
while((*dest++=*source++) != '\0')
;
return destination;