Tại sao scanf được gọi là scanf? (Tương tự cho printf.)


11

Tôi chỉ tò mò tại sao trong ngôn ngữ lập trình C, chức năng đọc đầu vào được định dạng được gọi là "scanf" trái ngược với "readf". Tôi cho rằng nó có nguồn gốc từ một ngôn ngữ trước đó, vậy trong trường hợp đó tại sao nó lại được đặt tên theo ngôn ngữ đó? (Tái diễn.)

Ngoài ra, tại sao "printf" chứ không phải "writef"? Trong các ngôn ngữ khác C, tại sao "in" hoặc "viết" thay vì "hiển thị"?

Câu trả lời:


12

Printf là "in - định dạng". Nó có cùng gốc với "in" trong "máy in", viết tắt của "teleprinter", một từ đồng nghĩa với "teletypewriter", và có khả năng là từ khi bạn sử dụng TTY thực để tương tác với máy tính thay vì màn hình và bàn phím.

Scanf là "quét - được định dạng" và khớp với mô hình "in", so sánh với việc sử dụng "máy quét" trong ngữ cảnh của OCR. Ngoài ra, người ta có thể cho rằng đọc / ghi đã là một cặp cuộc gọi hệ thống trong một thời gian dài và theo cách tương tự như printf khác với ghi (2), đã có mong muốn tách scanf khỏi đọc (2).


5

"Đọc" thực sự đòi hỏi sự hiểu biết về những gì bạn đang xem. Trái ngược với "Quét", về cơ bản có nghĩa là nắm bắt đầu vào, sau đó tôi sẽ tìm hiểu phải làm gì với nó sau này.


Đẹp. Bạn có biết nếu đây là thứ được người sáng tạo ra ngôn ngữ C hoặc ngôn ngữ gốc xem xét, hay đây chỉ là thứ gì đó có ý nghĩa? Ngoài ra, tại sao bạn nghĩ rằng một số ngôn ngữ sử dụng in thay vì viết hoặc hiển thị?
Doug Treadwell

1
Tôi nghĩ rằng rất nhiều thứ này có nguồn gốc từ thời kỳ mới, khi mọi thứ đã được thực hiện với punchcards (và cả những phiến đá :) nữa). Nếu bạn nghĩ rằng trong bối cảnh đó, quét / in có ý nghĩa hơn đọc / ghi.
Craig T

1
Tôi không đồng ý rằng "đọc" theo nghĩa điện toán đòi hỏi sự hiểu biết về những gì bạn đang xem. Tôi tin rằng nó có nghĩa là sao chép một cách mù quáng 1 và 0 từ nơi này sang nơi khác, ví dụ, từ đĩa vào bộ nhớ. Không có sự hiểu biết liên quan.
Thomas Dignan

Từ một ý nghĩa điện toán, bạn đúng, nhưng không phải từ ý nghĩa của con người.
Craig T

0

Đây là một câu trả lời chỉ là "trực giác". Tên readf()giả định rằng bạn đã có một cái gì đó để đọc. Nhưng scanf()thực sự có hai việc cần làm: Đợi đầu vào của người dùng (nói cách khác, tiếp tục quét bộ đệm đầu vào cho đến khi tìm thấy thứ gì đó) và sau đó đọc nó. Lưu ý rằng tôi không đánh giá hệ điều hành thực sự thực hiện điều đó như thế nào, tôi chỉ mô tả hoạt động khái niệm.

Tôi biết bạn sẽ nói với tôi fscanf()sscanf()không phù hợp với ý tưởng này, nhưng tôi cho rằng chúng là phần mở rộng scanf()và do đó chỉ là "bình thường" để đặt cho chúng cùng tên.

Nhân tiện, tại sao tên của bạn là "Doug" chứ không phải "ABCD" ?? :-P


Tôi đã thực sự tự hỏi nếu có một thị giác - tương đương với "lắng nghe". Chúng ta có thể "nghe" nhưng cũng "nghe", chúng ta có thể "đọc" nhưng theo như tôi biết thì không có từ nào để "chờ ai đó viết gì đó và sau đó đọc nó". Có lẽ quét là từ này.
Doug Treadwell

Từ dictionary.com định nghĩa 3 của quét: để nhìn ra hoặc quan sát nhiều lần hoặc quét một cách rộng rãi, như một khoảng rộng lớn; khảo sát.
Doug Treadwell

Vì vậy, định nghĩa từ điển này hỗ trợ yêu cầu của tôi, tôi đoán. Nó gần với những gì chức năng được cho là phải làm.
OmarOthman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.