我試圖在C++中變得更好(我知道一點)。我正在處理字符數組。我發現了一個練習,其目標是反轉字符數組(將其從整數轉換爲字符數組後)。我收到以下錯誤(使用VS2005):嘗試反轉字符數組時出錯
運行時檢查失敗#2 - 變量'revBuffer'周圍的堆棧已損壞。
當我通過代碼,我注意到以下:
revBuffer = 0x0012fe40 「100899ÌÌÌÌÌÌÌÌÌÌ998001」
相關的代碼如下。
char buffer[5];
char revBuffer[5];
int i;
int j=5;
long number = 998001;
itoa(number, buffer, 10);
for(i=0; i<strlen(buffer);i++)
{
revBuffer[j] = buffer[i];
j--;
}
任何幫助將是偉大的。 TIA!
通過您的代碼只是跟蹤 - 看指數的值是會用於for循環的第一次迭代中。 – Cascabel 2010-05-26 15:22:58
與你的bug無關,但你應該從'for for循環表達式中提取'strlen(buffer)',這樣它就不會在每個循環中被不必要地計算。 'strlen'通過掃描整個字符串直到它看到空終止符。我認爲把'strlen'留在循環中會是一種「過早悲觀化」(恕我直言)。 – 2010-05-26 15:36:06
@Emile過早的悲觀,哈哈。 – WhirlWind 2010-05-26 15:36:58