用戶輸入 len=9,但統計字符數的變量 i 輸出卻是 12。
char *essay = new char[len+1];
// ...
cin.ignore(INT_MAX, '\n');
for(i=0; i<len; i++)
essay[i] = cin.get();
// 長度判斷
i=0;
while(essay[i] != '\0') i++;
cout << i; // 輸出 12
cin >> len 後緩衝區留有 \n,雖有 cin.ignore(),但若前一次輸入有多餘字符可能未清理乾淨。cin.get() 讀取換行符:循環讀取 len 個字符時,若用戶輸入內容包含空格或換行,實際存入數組的字符可能超過預期。essay 未初始化,while(essay[i]!='\0') 會越界讀取隨機內存直到遇到 0,導致計數異常。// 讀取前完整清理緩衝區
cin.ignore(numeric_limits::max(), '\n');
// 使用 getline 讀取整行
cin.getline(essay, len+1);
// 或手動添加結尾
essay[len] = '\0';