將字符串 "1234567" 原地反轉為 "7654321",補全代碼空白處。
main() {
int i, j, k; // 空白處補全:定義臨時變量 k
char str[] = "1234567"; // 注意:{} 初始化列表僅用於數組,字符串用雙引號
for (i = 0, j = strlen(str) - 1; i < j; i++, j--) {
k = str[i];
str[i] = str[j];
str[j] = k;
}
printf("%s\n", str); // 輸出:7654321
}
j = strlen(str) - 1:字符串長度 7,最後一個字符下標為 6,故需 -1。i < j:雙指針向中間逼近,相遇或交錯停止,避免重複交換中間字符(奇數長度)。k 必須定義在外層或循環內,用於交換。j = strlen(str) 導致越界訪問 str[7](\0 終止符)。char str[] = {"1234567"} 大括號初始化字符數組,編譯器可能警告或報錯。<string.h> 導致 strlen 隱式聲明警告。若字符串包含多字節字符(UTF-8 中文),按字節反轉會破壞編碼,需按字符(Unicode 碼點)反轉,可使用 wchar_t 或 ICU 庫處理。