Chào mọi người,Hiện tại mình đang học lớp vỡ lòng C phần nhập và xuất ,với hàm đầu ra : printf(). chức năng của nó là hiển thị xuất dữ liệu ra màn hình.Hiện tại mình có thắc mắc mong mọi người giúp đỡ, câu hỏi của mình là : “Trong lúc thực hiện lệnh in của hàm printf() từ lúc ta đưa dữ liệu vào đến lúc nó thực sự gửi kết quả ra màn hình nó có làm gì thêm trong quá trình ấy hay k ? tiếp theo là : “Hàm printf có quy định độ dài của dữ liệu hay không ?”.Mình xin cảm ơn
-------->>>Sau khi tìm đọc tài liệu trên mạng, mình có ghi chú lại 1 kết luận gần và liên quan nhất đến hàm print() cùng vấn đề mình nêu trong chủ đề này.và mình xin phép thay thế câu hỏi 1 bằng cách nhờ mọi người giải thích giúp cái kết luận này :
" hàm printf() thực sự gửi kết quả ra màn hình trong 3 trường hợp : Khi đầy bộ đệm,khi kết thúc bằng dấu \n , ký tự newline hoặc khi sau nó là 1 yêu cầu nhập dữ liệu đầu vào (vd như scanf() ).” Mọi người có thể giải thích giúp mình k?
Thắc mắc về cách hoạt động của hàm printf
nhu cầu cảu bạn là gì mà cần hiểu sâu thế? và bạn có biết về hệ điều hành chưa, nếu chưa e là có giải thích bạn cũng khó mà hiểu được
4 Likes
mình học theo diện thỏa mãn trí tò mò k theo trường phái ,hơi hướm nghề nghiệp nào, nên có thể có câu hỏi khá ngớ ngẩn.mong bạn thông cảm .Vì mỗi lúc mà mình nhấn nút chạy ct thì mình hay tự đặt câu hỏi là : chuyện gì đã xảy ra từ lúc bắt đầu chạy ct đến lúc in ra thông điệp ở màn hình?Nếu in 1 đoạn văn bản, dài ngắn khác nhau thì hẳn là nó phải có giới hạn nào đó chứ .Nên tớ đặt 2 câu hỏi bên trên mong mọi người giúp
vậy thì mình trả lời bạn hiểu bao nhiêu thì hiểu nha
- printf có giới hạn độ dài dữ liệu không -> về cơ bản là không. tuỳ vào bộ nhớ và sức mạnh của máy tính mà sẽ là giới hạn của printf. in càng nhiều đòi hỏi máy càng mạnh và bộ nhớ càng lớn thôi.
- để nói quá trình printf thì rất phức tạp, mình khuyến khích bạn tự tìm hiểu thông qua keyword how does printf work.
còn diagram sương sương thì như sau:
chương trình gọi hàm printf -> gọi hàm printf chứa code hiện thực lệnh print từ HĐH đang chạy (chủ yếu là assembly) -> code này chứa syscall / interrupt để gọi xuống các kernel service -> khi này kernel sẽ giao tiếp với card đồ hoạ để tính toán các pixel cần in ra màn hình (giao tiếp thông qua một phần mềm gọi là driver) -> card đồ hoạ tính toán xong in ra màn hình thông qua các giao tiếp như HDMI, VGA, Display Port
6 Likes
cảm ơn bạn nhé, cái 1 thì tớ hiểu, cái 2 thì chắc tớ nên làm theo cách bạn khuyến khích thì hơn.
1 Like