ASCII 碼中,大寫字母 'A'~'Z' (65~90),小寫 'a'~'z' (97~122)。
差值恆為 32 (0x20),即第 5 位 (bit 5) 差異。
c + 32 或 c | 0x20 (置位)。c - 32 或 c & ~0x20 (清位)。#includechar lower = tolower('A'); // 'a' char upper = toupper('z'); // 'Z' // 自動處理非字母字元 (原樣返回),支援 locale
char to_lower(char c) {
if (c >= 'A' && c <= 'Z') return c + 32;
return c;
}
char to_upper(char c) {
if (c >= 'a' && c <= 'z') return c - 32;
return c;
}
#includeint main() { char c1, c2; printf("請輸入一個大寫字母: "); scanf(" %c", &c1); // 空格跳過空白 c2 = c1 + 32; printf("小寫: %c (ASCII: %d)\n", c2, c2); return 0; } // 輸入 A -> 輸出 a (97)