debug:获取A程序输出中的错误

时间:2014-03-22 00:31:27

标签: c++ char

我一直在调试我的EAN程序超过一天,仍然找不到导致程序崩溃的错误。到目前为止,我已将其缩小为一个函数strwithstyle函数,因为当它没有被调用时程序运行正常(尽管没有添加样式字符)。但是,当被调用时,程序会在乱码中显示其输出,程序会触发断点。如果有人能告诉我为什么会发生这种情况会有很大的帮助!

    void EAN::toStrWithStyle(char* str) const {
    if (isRegistered()) {
        if (choice == '-') {
            sprintf(str, "%s-%s-%s-%s-%c", prefix, area, publisher, title, ean[strlen(ean) - 1]);
        }
        else if (choice == ' ') {
            sprintf(str, "%s %s %s %s %c", prefix, area, publisher, title, ean[strlen(ean) - 1]);
        }
        else  {
            toStr(str);
        }
    }
}

这是显示功能(这样你就可以了解参数str的来源):

    void EAN::display(std::ostream& os) const {
    char* strmem = nullptr;
    if (isRegistered()) {
        strmem = new char[strlen(ean) + 5];
        toStrWithStyle(strmem);
    }
    else {
        strmem = new char[strlen(ean) + 1];
        toStr(strmem);
    }
    os << right << setw(17) << strmem;
    delete [] strmem;
    strmem = nullptr;
}

0 个答案:

没有答案