Perché scanf si chiama scanf? (Lo stesso per printf.)

10

Sono curioso di sapere perché nel linguaggio di programmazione C la funzione per leggere input formattati è stata chiamata "scanf" anziché "readf". Presumo che sia derivato da una lingua precedente, quindi in quel caso perché è stato chiamato così nella lingua precedente? (Recurse.)

Inoltre, perché "printf" piuttosto che "writef"? In lingue diverse da C, perché "stampare" o "scrivere" piuttosto che "visualizzare"?

    
posta Doug Treadwell 29.11.2011 - 06:53
fonte

3 risposte

12

Printf è "stampato - formattato". Ha la stessa radice di "print" in "printer", che è una scorciatoia per "teleprinter", un sinonimo di "teletypewriter", e arriva probabilmente dal momento in cui hai usato veri TTY per interagire con i computer invece di monitor e tastiere.

Scanf è "scan-formatted" e corrisponde al paradigma "print", confronta con l'uso di "scanner" nel contesto dell'OCR. Inoltre, si potrebbe supporre che lettura / scrittura siano state una coppia di chiamate di sistema per un lungo periodo di tempo, e nello stesso modo in cui printf è distinto da write (2), c'è stato il desiderio di separare scanf da read (2).

    
risposta data 29.11.2011 - 11:05
fonte
5

"Leggi" richiede effettivamente la comprensione di ciò che stai guardando. Al contrario di "Scan", che in pratica significa catturare l'input, quindi capirò cosa fare in seguito.

    
risposta data 29.11.2011 - 07:15
fonte
0

Questa è una risposta che è solo "intuizione". Il nome readf() presuppone che tu abbia già qualcosa da leggere. Ma scanf() ha in realtà due cose da fare: Attendi per l'input dell'utente (in altre parole, mantieni scansiona il buffer di input finché trova qualcosa) e poi leggi. Nota che non sto valutando come il sistema operativo lo implementa, sto solo descrivendo l'operazione concettuale.

So che mi dirai fscanf() e sscanf() non corrispondono a questa idea, ma presumo che siano estensioni a scanf() e quindi era solo "normale" dare loro lo stesso nome.

A proposito, perché il tuo nome è "Doug" e non "ABCD" ?? :-P

    
risposta data 29.11.2011 - 07:21
fonte

Leggi altre domande sui tag