Bài 3 · Cơ bản · 16 phút· Cập nhật 11/06/2026
Làm quen với C
Biên soạn bởi Nguyễn Anh Tuấn
Viết hello.c, biên dịch thành file chạy được, chạy trong terminal, rồi đọc vài lỗi biên dịch cơ bản như thiếu ; hoặc thiếu }.
C là một trong những ngôn ngữ lập trình quan trọng và lâu đời nhất - nền tảng của Linux, nhiều hệ điều hành và cả các ngôn ngữ ra sau. Theo truyền thống, chương trình đầu tiên ai cũng viết là in ra dòng chữ Hello, World!. Bấm từng dòng để xem nó làm gì:
Bấm vào từng dòng để xem nó làm gì:
In dòng chữ Hello, World! ra màn hình. \n nghĩa là “xuống dòng”. Dấu ; kết thúc câu lệnh - bắt buộc!
- ▸Mọi chương trình C bắt đầu chạy từ hàm main.
- ▸printf in chữ ra màn hình - cần header #include <stdio.h> ở đầu.
- ▸Mỗi câu lệnh kết thúc bằng dấu chấm phẩy “;”.
Khác Scratch hay Python trong cách chạy chương trình, C là ngôn ngữ biên dịch (compiled): bạn viết mã nguồn (file .c), rồi một chương trình tên trình biên dịch (compiler, vd gcc) dịch toàn bộ sang mã máy thành một file chạy được (executable). Sau đó bạn chạy file đó.
- ▸Viết: lưu mã nguồn vào file hello.c.
- ▸Biên dịch: cc -std=c17 -Wall -Wextra -Wpedantic -g hello.c -o hello → tạo file chạy được tên “hello” (bộ cờ đồng hành từ bài Cài đặt môi trường).
- ▸Chạy: ./hello → in ra Hello, World!.
- ▸Biên dịch MỘT lần, chạy NHIỀU lần, thực thi rất nhanh vì đã biên dịch ra mã máy từ bước trên.
Mọi chương trình C đều có chung một bộ khung. Dưới đây là một ví dụ in ra hai dòng, để ý nó vẫn gồm #include, main(void), các câu lệnh kết thúc bằng “;”, và return 0;:
hello2.c
#include <stdio.h>
int main(void) {
printf("Toi dang hoc C!\n");
printf("That thu vi.\n");
return 0;
} Kết quả khi chạy
Toi dang hoc C! That thu vi.
- ▸#include <...> ở đầu để đưa khai báo từ header vào mã nguồn.
- ▸int main(void) { ... } là thân chính của chương trình.
- ▸Mỗi statement kết thúc bằng “;” xuống dòng chỉ để code dễ đọc.
- ▸return 0; ở cuối báo chương trình chạy xong, 0 nghĩa là không có lỗi, khác 0 nghĩa có lỗi. Hệ điều hành có thể dùng số trả về này để biết chương trình chạy thành công hay thất bại.
Bạn có thể tìm kiếm thêm về standard exit codes trong các hệ điều hành phổ biến như Windows, MacOS, Linux.
Thông thường các bạn mới học lập trình C thường mắc phải một số lỗi cơ bản sau đây (đừng lo lắng, chỉ là vài lỗi vặt, không có gì kinh khủng đâu):
- ▸Thiếu dấu “;” ở cuối câu lệnh → lỗi biên dịch (hay gặp nhất).
- ▸Thiếu dấu “}” đóng hàm → lỗi “mong đợi }”.
- ▸Quên #include <stdio.h> → trình biên dịch không nhận ra printf.
- ▸Viết Main hoặc MAIN thay vì main → C phân biệt CHỮ HOA/thường.
Mẹo: đọc thông báo lỗi
Câu hỏi thường gặp
C là ngôn ngữ BIÊN DỊCH: mã nguồn được dịch trước ra mã máy thành một file chạy được, rồi hệ điều hành chạy file đó. Python/Scratch thường chạy qua runtime/interpreter khi bạn bấm chạy, tiện để học và thử nhanh, nhưng không tạo executable riêng theo cách C làm trong bài này.
Từ header chuẩn stdio.h (standard input/output). Dòng #include <stdio.h> đưa phần khai báo cần thiết vào mã nguồn, để compiler biết printf nhận tham số và trả về kiểu gì. Phần thư viện chuẩn được linker ghép ở bước sau.
Đó là một ký tự đặc biệt nghĩa “xuống dòng” (newline). Không có \n thì chữ in ra sẽ dính liền nhau. Tương tự, \t là một dấu tab.
Nên có. Số 0 trả về cho hệ điều hành nghĩa là “chương trình chạy xong, không lỗi”. Với main, chuẩn C cho phép bỏ (mặc định coi như trả 0), nhưng viết rõ ra là thói quen tốt.
Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.
Trả lời vài câu để chắc rằng em đã nắm bài.
Theo bài, ba bước để biến file hello.c thành dòng chữ hiện trên màn hình là gì?
- 1
In tên của mèo con
Sửa chương trình Hello World để in ra “Xin chao, <tên mèo con>!”.
Hoàn thành khi: Dòng
printfđổi thành vdprintf("Xin chao, Tuan!\n");- chạy ra đúng câu đó. - 2
In ba dòng
Viết một chương trình in ra 3 dòng chữ bất kỳ, mỗi dòng một câu.
Hoàn thành khi: 3 lệnh
printf(hoặc 1printfcó 3 dấu\n), kết quả là 3 dòng riêng biệt. - 3
Tìm và sửa lỗi
Một chương trình bị thiếu dấu “;” ngay sau lệnh
printfnên không biên dịch được. Mèo con hãy chỉ ra và sửa.Hoàn thành khi: Thêm “;” vào cuối câu
printf→ chương trình biên dịch và chạy bình thường. - 4
Ba bước để chạy
Viết lại 3 bước biến file
hello.cthành dòng chữ hiện trên màn hình.Hoàn thành khi: 1) viết & lưu
hello.c· 2) biên dịch:cc -std=c17 -Wall -Wextra -Wpedantic -g hello.c -o hello· 3) chạy:./hello. - 5
Vì sao phải biên dịch lại?
Giải thích bằng lời: vì sao sửa một chữ trong
printfrồi phải BIÊN DỊCH LẠI mới thấy thay đổi?Hoàn thành khi: Vì file đang chạy là bản dịch CŨ; phải dịch lại mã nguồn để tạo file chạy mới có nội dung đã sửa.