我尝试创建一个简单的程序,允许我递增当前整数并替换 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/