เหตุใด scanf จึงเรียกว่า scanf (เหมือนกันสำหรับ printf.)


11

ฉันแค่อยากรู้ว่าทำไมในภาษาการเขียนโปรแกรม C ฟังก์ชั่นในการอ่านอินพุตที่จัดรูปแบบถูกเรียกว่า "scanf" ซึ่งตรงข้ามกับ "readf" ฉันคิดว่ามันมาจากภาษาก่อนหน้าดังนั้นในกรณีนี้เหตุใดจึงตั้งชื่อแบบนั้นในภาษาก่อนหน้า (recurse.)

ทำไม "printf" มากกว่า "writef" ในภาษาอื่นที่ไม่ใช่ C ทำไม "พิมพ์" หรือ "เขียน" แทนที่จะเป็น "ดิสเพลย์"

คำตอบ:


12

Printf คือ "รูปแบบการพิมพ์" มันมีรูทเหมือนกับ "print" ใน "printer" ซึ่งย่อมาจาก "teleprinter" ซึ่งเป็นคำพ้องสำหรับ "teletypewriter" และน่าจะมาจากเวลาที่คุณใช้ TTY จริงเพื่อโต้ตอบกับคอมพิวเตอร์แทนที่จะเป็นจอภาพและคีย์บอร์ด

Scanf คือ "สแกน - ฟอร์แมต" และตรงกับกระบวนทัศน์ "พิมพ์" เปรียบเทียบกับการใช้ "สแกนเนอร์" ในบริบทของ OCR นอกจากนี้อาจสันนิษฐานได้ว่าการอ่าน / เขียนเป็นคู่ของการเรียกของระบบเป็นเวลานานและในทางเดียวกันเมื่อ printf แตกต่างจากการเขียน (2) มีความต้องการที่จะแยก scanf จาก read (2)


5

"อ่าน" จริง ๆ แล้วต้องการความเข้าใจในสิ่งที่คุณกำลังดู ตรงข้ามกับ "สแกน" ซึ่งโดยทั่วไปหมายถึงการจับภาพอินพุตจากนั้นฉันจะคิดออกว่าจะทำอย่างไรกับมันในภายหลัง


ดี คุณมีความคิดใด ๆ หรือไม่หากนี่เป็นสิ่งที่ผู้สร้างภาษา C พิจารณาหรือเป็นภาษาแม่หรือนี่เป็นเพียงสิ่งที่สมเหตุสมผล นอกจากนี้ทำไมคุณถึงคิดว่าบางภาษาใช้การพิมพ์แทนการเขียนหรือการแสดง?
Doug Treadwell

1
ฉันคิดว่าสิ่งนี้มีต้นกำเนิดในสมัยก่อนเมื่อทุกอย่างทำด้วย punchcard (และเม็ดศิลา :) ด้วยเช่นกัน หากคุณคิดว่าการสแกน / พิมพ์ในบริบทนั้นเหมาะสมกว่าอ่าน / เขียน
Craig T

1
ฉันไม่เห็นด้วยที่ "อ่าน" ในแง่การคำนวณต้องมีความเข้าใจในสิ่งที่คุณกำลังดู ฉันเชื่อว่าหมายถึงการคัดลอก 1 และ 0 ของสุ่มสี่สุ่มห้าจากที่หนึ่งไปยังอีกที่หนึ่งตัวอย่างเช่นจากดิสก์ไปยังหน่วยความจำ ไม่มีความเข้าใจที่เกี่ยวข้อง
โทมัส Dignan

จากความรู้สึกด้านคอมพิวเตอร์คุณคิดถูก แต่ไม่ใช่จากความรู้สึกของมนุษย์
Craig T

0

นี่คือคำตอบที่เป็นเพียง "ปรีชา" ชื่อreadf()สมมติว่าคุณมีสิ่งที่จะอ่านแล้ว แต่scanf()จริงๆแล้วมีสองสิ่งที่ต้องทำ: รอให้อินพุตของผู้ใช้ (กล่าวอีกนัยหนึ่งให้ทำการสแกนบัฟเฟอร์อินพุตจนกว่าจะพบบางสิ่ง) จากนั้นอ่านมัน โปรดทราบว่าฉันไม่ได้ตัดสินว่าระบบปฏิบัติการใช้งานจริงได้อย่างไรฉันแค่อธิบายการดำเนินการตามแนวคิด

ฉันรู้ว่าคุณจะบอกฉันfscanf()และsscanf()ไม่ตรงกับความคิดนี้ แต่ฉันถือว่าพวกเขาเป็นส่วนขยายscanf()และดังนั้นจึงเป็นเพียง "ปกติ" เพื่อให้พวกเขามีชื่อเดียวกัน

ทำไมชื่อของคุณ "ดั๊ก" และไม่ใช่ "ABCD" :-P


จริง ๆ แล้วฉันสงสัยว่ามีความรู้สึกที่เทียบเท่ากับ "ฟัง" เราสามารถ "ได้ยิน" แต่ยัง "ฟัง" เราสามารถ "อ่าน" แต่เท่าที่ฉันรู้ว่าไม่มีคำว่า "รอให้ใครซักคนเขียนอะไรแล้วอ่าน" อาจจะสแกนเป็นคำนี้
Doug Treadwell

จาก dictionary.com คำจำกัดความ 3 ของการสแกน: เพื่อตรวจดูหรือสังเกตซ้ำ ๆ หรือกวาดเป็นแนวกว้าง สำรวจ.
Doug Treadwell

ดังนั้นคำจำกัดความพจนานุกรมนี้สนับสนุนการเรียกร้องของฉันฉันเดา มันใกล้เคียงกับฟังก์ชั่นที่ควรทำ
OmarOthman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.