c++ - 生成 "Next Number"并添加到 char*

标签 c++ function pointers

我尝试创建一个简单的程序,允许我递增当前整数并替换 char* 中的最后“n 个字符”。

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

例如索引 = 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;
}

最佳答案

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

_itoa_s(index, buffer, 9, 10);

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

关于c++ - 生成 "Next Number"并添加到 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44407802/

相关文章:

javascript - Javascript 中的函数传递函数立即调用第二个函数

javascript - 在回调函数中进行新的异步调用

指向地址的常量指针或指向值的指针

c++ - [C++] 对于线程中的 'sleep' 函数,这是否是一种有效的方法?

c++ - 使用 Doxygen 记录预处理器选项

c++ - 在函数中获取 c 样式字符串的大小(不是长度)

arrays - 为什么二维数组的行为类似于一维指针数组而不是一维整数数组?

c++ - std::vector 比 std::unordered_set 更快?

c++ - 在 C++ 中跳回到函数的开头

pointers - reflect.Pointer() 返回值不是值地址