Khái niệm
Chuyển đổi chữ hoa thành thường và ngược lại gọi là toggle. Mỗi ký tự trong chuỗi được đảo ngược trạng thái chữ hoa/thường.
Cách 1: Tự triển khai logic (ASCII)
Chữ thường (a-z) có mã ASCII lớn hơn chữ hoa (A-Z) đúng 32 đơn vị.
#include <stdio.h>
#define MAX 100
void toggle(char *string);
int main() {
char string[MAX];
printf("Nhap chuoi can toggle:\n");
gets(string);
toggle(string);
printf("Chuoi sau khi toggle:\n%s\n", string);
return 0;
}
void toggle(char *string) {
int i = 0;
while (string[i] != '\0') {
if (string[i] >= 'a' && string[i] <= 'z')
string[i] = string[i] - 32; // thường -> hoa
else if (string[i] >= 'A' && string[i] <= 'Z')
string[i] = string[i] + 32; // hoa -> thường
i++;
}
}
Kết quả
Nhap chuoi can toggle: TutoRialS PoinT C ProgrAmmIng LanGuage Chuoi sau khi toggle: tUTOrIALs pOINt c pROGRaMMiNG lANgUAGE
Cách 2: Sử dụng hàm thư viện ctype.h
#include <stdio.h>
#include <ctype.h>
int main() {
int i, length = 0;
char string[] = "TutORial";
length = sizeof(string) / sizeof(string[0]);
for (i = 0; i < length; i++) {
if (isupper(string[i]))
string[i] = tolower(string[i]);
else if (islower(string[i]))
string[i] = toupper(string[i]);
}
printf("Chuoi sau chuyen doi: %s", string);
return 0;
}
Kết quả
Chuoi sau chuyen doi: tUTorIAL