2017-06-07 24 views
0

我試圖創建一個簡單的程序,讓我來遞增當前整並替換最後一個「n個字符」中的一個char *。生成「下一個號碼」,並將其添加爲char *

但是,無論我做什麼,它只是遍佈輸出同樣的事情。

e.g指數= 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; 
} 
+0

什麼是預期的結果? – SingerOfTheFall

+0

你在做什麼錯?使用新的和C字符串。忘記用於管理字符串的顯式新字符和字符指針。只需使用std :: string即可。並扔掉系統(「暫停」);有cin.get(); –

+0

預期的結果將是,因爲它上面所提到的:XX201701,XX201702,XX201703,XX201704,... XX201710 – Arman

回答

1

我認爲你需要打印的index代替counter

_itoa_s(index, buffer, 9, 10); 

因爲counter值將是1 1..9 index所以輸出字符串將保持不變。

+0

這似乎已修復它。我不知道爲什麼,但由於某種原因,我錯誤地檢查了「int counter = 0;」並且忘記了每次調用函數時它都會重置爲0。謝謝您的幫助。 – Arman

相關問題