Chào mừng bạn đến với Vimentor!

Hỏi đáp
Đăng ký

Input/Output (I/O) trong C

Bài học tập trung vào 2 hàm có sẵn thực hiện công việc đọc/ghi (nhập/xuất) trong ngôn ngữ lập trình C là printf() và scanf(). Bên cạnh đó, bạn sẽ học được cách viết một chương trình hợp lệ trong C.

C Programming Input Output

Ngôn ngữ lập trình C có một số thư viện hàm có sẵn (in-built library function) giúp thực hiện công việc đọc và ghi (I/O).

Hai hàm được dùng phổ biến cho I/O là printf() và scanf().

Hàm scanf() đọc dữ liệu đầu vào theo định dạng từ đầu vào chuẩn - standard input (bàn phím) trong khi hàm printf()  lại gửi dữ liệu đầu ra theo định dạng đến đầu ra chuẩn -standard output (màn hình).

Ví dụ 1: C Output

#include <stdio.h>      //Lệnh này cần để chạy hàm printf().
int main()
{
	printf("C Programming");  //hiển thị nội dung bên trong cặp dấu “”
	return 0;
}

Kết quả:

C Programming

Cách chương trình hoạt động?

  • Tất cả những chương trình C hợp lệ đều phải chứa hàm main(). Việc thực thi mã bắt đầu từ hàm này.

  • printf()  là hàm thư viện giúp gửi dữ liệu ra theo định dạng đến màn hình.

Hàm này được khai báo trong file header "stdio.h" .

  • Ở đây, "stdio.h" là một file header (File header đọc/ghi chuẩn) và #include là một chỉ thị tiền xử lý (preprocessor directive) có nhiệm vụ dán mã từ file header khi cần thiết. Khi trình biên dịch gặp hàm printf()  và không tìm thấy file header stdio.h, nó sẽ báo lỗi.

Ví dụ 2: Ghi ra/Hiển thị một số nguyên trong C

#include <stdio.h>
int main()
{
	int testInteger = 5;
	printf("Number = %d", testInteger);
	return 0;
}

Kết quả:

Number = 5

Bên trong cặp dấu “” của hàm printf() xuất hiện chuỗi định dạng "%d" (đối với số nguyên). Nếu chuỗi định dạng khớp/tương thích với tham số (trong trường hợp này là testInteger), nó sẽ được hiển thị trên màn hình.

Ví dụ 3: Đọc/Ghi số nguyên trong C

#include <stdio.h>
int main()
{
	int testInteger;
	printf("Enter an integer: ");
	scanf("%d",&testInteger);  
	printf("Number = %d",testInteger);
	return 0;
}

Kết quả:

Enter an integer: 4

Number = 4

Hàm scanf() đọc đầu vào theo định dạng từ bàn phím. Khi người dùng nhập một số nguyên, nó sẽ được chứa trong biến testInteger

Chú ý đến kí hiệu '&' ngay trước testInteger; &testInteger lấy địa chỉ của testInteger và giá trị này sẽ được lưu vào địa chỉ đó.

Đọc/Ghi số thập phân trong C

#include <stdio.h>
int main()
{
	float f;
	printf("Enter a number: ");
	// Chuỗi định dạng %f được sử dụng trong trường hợp số thực kiểu float
	scanf("%f",&f);
	printf("Value = %f", f);
	return 0;
}

Kết quả:

Enter a number: 23.45

Value = 23.450000

Chuỗi định dạng "%f" được dùng để đọc và hiển thị theo định dạng trong trường hợp số thực kiểu float.

Ví dụ 4: Đọc/Ghi kí tự trong C

#include <stdio.h>
int main()
{
	char chr;
	printf("Enter a character: ");
	scanf("%c",&chr);     
	printf("You entered %c.",chr);  
	return 0;
}

Kết quả:

Enter a character: g

You entered g.

Chuỗi định dạng %c được dùng trong trường hợp kiểu kí tự.

Một chút kiến thức về mã ASCII

Khi một ký tự được nhập vào chương trình trên, bản thân kí tự đó sẽ không được lưu. Thay vào đó, một giá trị số (giá trị ASCII) sẽ được lưu.

Và khi chúng ta hiển thị giá trị đó bằng cách sử dụng định dạng "%c", kí tự được nhập sẽ được hiển thị.

Ví dụ 5: Mã ASCII trong C

#include <stdio.h>
int main()
{
	char chr;
	printf("Enter a character: ");
	scanf("%c",&chr);     

	// Khi định dạng %c  được sử dụng, ký tự sẽ được hiển thị trong trường hợp kiểu ký tự.
	printf("You entered %c.\n",chr);  

	// Khi định dạng %d được sử dụng, số nguyên sẽ được hiển thị trong trường hợp kiểu ký tự
	printf("ASCII value of %c is %d.", chr, chr);  

	return 0;
}

Kết quả

Enter a character: g

You entered g.

ASCII value of g is 103.

The ASCII value of character 'g' is 103. When, 'g' is entered, 103 is stored in variable var1 instead of g.

Bạn có thể hiển thị một kí tự nếu bạn biết mã ASCII của kí tự đó. Cùng xem ví dụ sau đây:

Ví dụ 6: Mã ASCII trong C

#include <stdio.h>
int main()
{
	int chr = 69;
	printf("Character having ASCII value 69 is %c.",chr);

	return 0;
}

Kết quả

Character having ASCII value 69 is E.

Bổ sung thêm về Đọc/Ghi số nguyên và số thực

Số nguyên và số thực có thể được hiển thị thông qua nhiều định dạng trong ngôn ngữ lập trình C.

Ví dụ 7: Đọc/Ghi số nguyên và số thực

#include <stdio.h>
int main()
{
	int integer = 9876;
	float decimal = 987.6543;

	//  Hiển thị số trong 6 cột, căn lề phải
	printf("4 digit integer right justified to 6 column: %6d\n", integer);

	// Cố gắng hiển thị số trong 3 cột, căn lề phải nhưng số không được căn chỉnh đúng vì có 4 chữ số

	printf("4 digit integer right justified to 3 column: %3d\n", integer);

	// Làm tròn đến chữ số thập phân thứ 2

	printf("Floating point number rounded to 2 digits: %.2f\n",decimal);

	// Làm tròn không chứa chữ số thập phân

	printf("Floating point number rounded to 0 digits: %.f\n",987.6543);

	// Hiển thị số theo dạng ký hiệu số mũ (ký pháp khoa học)

	printf("Floating point number in exponential form: %e\n",987.6543);

	return 0;
}

Kết quả:

4 digit integer right justified to 6 column:   9876

4 digit integer right justified to 3 column: 9876

Floating point number rounded to 2 digits: 987.65

Floating point number rounded to 0 digits: 988

Floating point number in exponential form: 9.876543e+02  

** Nếu bạn muốn viết các nội dung đặt biệt thì hãy làm theo hướng dẫn sau

Xem thêm 10 bình luận
Viết blog mới của bạn
Báo lỗi trang
Đang tải