Chuyển chữ hoa sang chữ thường và ngược lại trong C | Laptrinhcanban.com

Chuyển chữ hoa sang chữ thường và ngược lại trong C

Hướng dẫn cách chuyển chữ hoa sang chữ thường và ngược lại trong C. Bạn sẽ học được cách sử dụng các hàm trong thư viện chuẩn như hàm toupper(), tolower() , hoặc là tự tạo ra hàm để chuyển chữ hoa sang chữ thường và ngược lại, chuyển chữ thường sang chữ hoa trong C sau bài học này.

Chuyển chữ hoa sang chữ thường trong C | Hàm tolower()

Hàm tolower trong C là một hàm có sẵn header file ctype.h, giúp chúng ta chuyển chữ hoa sang chữ thường trong C.

Cú pháp sử dụng hàm tolower() trong C như sau:

tolower(chr;)

Trong đó chr là ký tự cần chuyển về chữ thường trong C.

Hàm tolower() sẽ trả về chữ thường sau khi chuyển đổi từ ký tự chỉ định nếu có thể, và trả về chính ký tự chỉ định, nếu ký tự đó không thể chuyển về chữ thường.

Ví dụ:

#include <stdio.h>
#include <ctype.h>

int main(void){
char c;
/*Trường hợp có thể chuyển về chữ thường*/
c = tolower('H');
printf("%c\n", c); //h

c = tolower('A');
printf("%c\n", c); //a

/*Trường hợp không thể chuyển về chữ thường*/
c = tolower('a');
printf("%c\n", c); //a

c = tolower('8');
printf("%c\n", c); //8

return 0;
}

Tuy nhiên nếu như chúng ta không chỉ định ký tự, mà chỉ định một số khi sử dụng hàm tolower thì kết quả Null sẽ được trả về. Và nếu chỉ định một chuỗi như đối số trong hàm này, thì lỗi sẽ xảy ra. Do đó hãy chú ý là cần sử dụng hàm tolower() với một ký tự mà thôi.

Chuyển chữ thường sang chữ hoa trong C | Hàm toupper()

Ngược với hàm tolowertolower() thì chúng ta có hàm toupper(), với cách sử dụng tương tự nhưng chức năng thì ngược nhau.

Hàm toupper trong C là một hàm có sẵn header file ctype.h, giúp chúng ta chữ thường sang chữ hoa trong C.

Cú pháp sử dụng hàm toupper() trong C như sau:

toupper(chr;)

Trong đó chr là ký tự cần chuyển về chữ hoa trong C.

Hàm toupper() sẽ trả về chữ hoa sau khi chuyển đổi từ ký tự chỉ định nếu có thể, và trả về chính ký tự chỉ định, nếu ký tự đó không thể chuyển về chữ hoa.

Ví dụ:

#include <stdio.h>
#include <ctype.h>

int main(void){
char c;
/*Trường hợp có thể chuyển về chữ hoa*/
c = toupper('h');
printf("%c\n", c); //H

c = toupper('a');
printf("%c\n", c); //A

/*Trường hợp không thể chuyển về chữ hoa*/
c = toupper('H');
printf("%c\n", c); //H

c = toupper('!');
printf("%c\n", c); //!

return 0;
}

Tương tự với hàm tolower(), nếu chúng ta chỉ định một số khi sử dụng hàm toupper thì kết quả Null sẽ được trả về. Và nếu chỉ định một chuỗi như đối số trong hàm này, thì lỗi sẽ xảy ra. Do đó hãy chú ý là cần sử dụng hàm toupper() với một ký tự mà thôi.

Tự tạo hàm chuyển chữ hoa chữ thường trong C

Ngoài cách sử dụng các hàm có sẵn trong thư viện chuẩn ở trên, chúng ta cũng có thể tự tạo ra các hàm để chuyển chữ hoa thành chữ thường và ngược lại trong C.

Trước khi bắt đầu viết hàm thì chúng ta cần phải điểm lại một chút về ký tự hoa và ký tự thường trong C.
Trong bài Mã ký tự trong C chúng ta đã biết ký tự trong C được biểu diễn thông qua các mã ký tự trong các bảng mã khác nhau. Ví dụ như trong bảng mã ASCII, ký tự a thường được biểu diễn bởi mã ký tự thập phân là 97, còn ký tự A hoa được biểu diễn bởi mã ký tự thập phân là 65 chẳng hạn.

Điều thú vị và là chìa khoá để giải quyết bài toán chuyển chữ hoa chữ thường trong C ở đây, đó chính là:

Mã ký tự ASCII của chữ thường luôn lớn mã ký tự ASCII của chữ hoa 32 đơn vị!

Thật vậy, ví dụ mã ASCII của b là 98, còn của B là 66 chẳng hạn, chúng luôn hơn kém nhau đúng 32 đơn vị! Chúng ta cũng có thể kiểm tra điều này bằng mã lệnh sau đây:

printf("%d\n", 'a' - 'A'); //32

Ứng dụng điều này, chúng ta có thể dễ dàng chuyển chữ hoa chữ thường trong C, thông qua việc thay đổi giá trị mã ASCII của chúng một lượng 32 đơn vị, và chính bằng hiệu 'a' - 'A' như ở trên.

Cụ thể chúng ta sẽ xây dựng hàm upper() để chuyển chữ thường thành chữ hoa và hàm lower() để chuyển chữ hoa thành chữ thường trong C như sau:

#include <stdio.h>

/*Hàm chuyển chữ thường thành chữ hoa trong C*/
char upper(char c){
if('a' <= c && c <= 'z'){
c = c - ('a' - 'A');
}
return c;
}

/*Hàm chuyển chữ hoa thành chữ thường trong C*/
char lower(char c){
if('A' <= c && c <= 'Z'){
c = c + ('a' - 'A');
}
return c;
}

int main(void){
char c;

c = lower('L');
printf("%c\n", c);

c = upper('l');
printf("%c\n", c);

return 0;
}

Kết quả chương trình:

l
L

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách chuyển chữ hoa sang chữ thường và ngược lại trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.