生成"下一个号码"并将其添加到char *

时间:2017-06-07 08:46:49

标签: c++ function pointers

我试图创建一个简单的程序,允许我增加当前整数并替换最后的" n个字符"在char *。

然而,无论我做什么,它只是输出相同的东西。

例如Index = 1

输出: XX201701 XX201702 XX201703 XX201704 ... XX201710

有人可能会告诉我这里我做错了什么吗?

#include<iostream>

using namespace std;

int index = 1;
char* GenerateNext()
{
    char* def = new char[9];
    char buffer[9];

    int counter = 0;
    int temp = index;

    while (temp != 0)
    {
        temp /= 10;
        counter++;
    }

    strncpy_s(def, 9, "XX160000", 8 - counter); 
    _itoa_s(counter, buffer, 9, 10);
    strcat_s(def, 9, buffer);

    index++;
    return def;
}

int main() 
{
    char* generated = GenerateNext();
    char* generated2 = GenerateNext();

    cout << generated << endl << generated2 << endl;

    delete[] generated;
    delete[] generated2;

    generated = nullptr; 
    generated2 = nullptr;

    system("PAUSE");
    return 0;
}

1 个答案:

答案 0 :(得分:1)

我认为您需要打印index而不是counter

_itoa_s(index, buffer, 9, 10);

因为counter的值对于1..9 index将为1,所以输出字符串将保持不变。