Scanf'a neden Scanf denir? (Printf için aynıdır.)


11

Sadece C programlama dilinde, biçimlendirilmiş girdiyi okuma fonksiyonunun neden "readf" yerine "scanf" olarak adlandırıldığını merak ediyorum. Daha eski bir dilden türetildiğini varsayıyorum, bu durumda neden daha önceki dilde bu şekilde adlandırıldı? (Recurse.)

Ayrıca, neden "writef" yerine "printf"? C dışındaki dillerde, neden "ekran" yerine "yazdır" veya "yaz"?

Yanıtlar:


12

Printf "baskı formatlıdır". "Teleprinter" kısaltması olan "printer" daki "print" ile aynı köke sahiptir ve "teletypewriter" ile eşanlamlıdır ve muhtemelen monitörler ve klavyeler yerine bilgisayarlarla etkileşim kurmak için gerçek TTY'leri kullandığınız andan itibaren gelir.

Scanf "tarama formatlıdır" ve "yazdırma" paradigmasıyla eşleşir, OCR bağlamında "tarayıcı" kullanımıyla karşılaştırılır. Ayrıca, okuma / yazma işleminin uzun süredir bir çift sistem çağrısı olduğu ve printf'in yazma (2) 'den farklı olduğu gibi, scanf'i okuma (2)' den ayırma arzusu olduğu varsayılabilir.


5

"Okuma" aslında baktığınız şeyin anlaşılmasını gerektirir. Temel olarak girdiyi yakalamak anlamına gelen "Tara" nın aksine, daha sonra onunla ne yapacağımı anlayacağım.


Güzel. Bunun C dilinin yaratıcısı mı yoksa ana dil mi olduğu düşünülüyor mu, yoksa bu sadece mantıklı mı? Ayrıca, neden bazı dillerin yazma veya görüntüleme yerine baskı kullandığını düşünüyorsunuz?
Doug Treadwell

1
Sanırım bunun birçoğu kökeni eskiden beri, her şey punchcards (ve taş tabletler :) ile yapıldığında geri döndü. Bu bağlamda tarama / yazdırma işleminin okuma / yazma işleminden daha anlamlı olduğunu düşünüyorsanız.
Craig T

1
Bilgi işlem anlamında "okumanın" baktığınız şeyin anlaşılmasını gerektirdiğini kabul etmiyorum. 1 ve 0'ları bir yerden bir yere, örneğin diskten belleğe körü körüne kopyalamanın anlamına geldiğine inanıyorum. Anlayış yok.
Thomas Dignan

Bilgi işlem anlamında haklısınız, ama insani anlamda değil.
Craig T

0

Bu sadece "sezgi" olan bir cevaptır. İsim, readf()zaten okunacak bir şeyiniz olduğunu varsayar. Ancak scanf()aslında yapılacak iki şey vardır: Kullanıcı girişini bekleyin (başka bir deyişle, bir şey bulana kadar giriş arabelleğini taramaya devam edin) ve ardından okuyun. İşletim sisteminin bunu nasıl uyguladığına karar vermediğimi, sadece kavramsal çalışmayı tanımladığımı unutmayın.

Bana söyleyeceğini fscanf()ve sscanf()bu fikirle eşleşmeyeceğini biliyorum , ama bunların uzantıları olduğunu varsayıyorum scanf()ve bu yüzden onlara aynı adı vermek sadece "normal" idi.

Bu arada, adınız neden "ABCD" değil "Doug" ?? :-P


Aslında "dinlemek" için eşdeğer bir görüş olup olmadığını merak ediyordum. Biz "duyabiliyoruz" ama aynı zamanda "dinleyebiliyoruz", "okuyabiliyoruz" ama bildiğim kadarıyla "birisinin bir şeyler yazmasını ve sonra okumasını beklemek" için bir kelime yok. Belki de tarama bu kelimedir.
Doug Treadwell

Scan'in Dictionary.com tanımından 3: büyük bir genişlik olarak tekrar tekrar veya süpürerek göz atmak veya gözlemlemek; anketi.
Doug Treadwell

Bu sözlük tanımı sanırım benim iddiamı destekliyor. İşlevin ne yapması gerektiğine yakın.
OmarOthman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.