Perché la funzione di stampa più semplice di C è denominata 'print' anziché 'printf'? [duplicare]

8

AFAIK, C non ha una funzione print . Il più semplice che possiamo ottenere è printf . Quindi, c'è una ragione per cui questa funzione non è semplicemente chiamata print , invece di printf ?

Tieni presente che la domanda riguarda scanf / readf e printf / writef . Questo è circa printf / print .

    
posta Utku 03.05.2016 - 20:00
fonte

3 risposte

19

Torniamo alle radici di K & R:

Origine

Nel capitolo tutorial, a pagina 11 del K & R originale, troverai un suggerimento sull'origine della funzione:

By the way, printf is not part of the C language; there is no input or output defined in C itself. There is nothing magic about printf; it's just a useful function that is part of the standard library of routines that are normally accessible to C programs.

La dicitura "accessibile" suggerisce che potrebbe basarsi su librerie condivise con altri linguaggi di programmazione come suggerito da Jules o su librerie di OS condivise. Poiché B e C sono entrambi strettamente collegati allo sviluppo di UNIX e alle stesse persone, D .Ritchie, BWKernighan e K.Thompson hanno lavorato a stretto contatto su questi argomenti, non sorprende che usino convenzioni di denominazione simili.

Perché il f di printf?

Il titolo della sezione 7.3 Formatted output - printf a pagina 145 della versione originale di K & R suggerisce caldamente che f significhi formattato:

La ricerca in altre fonti mostrerà che B e C's printf sembrano entrambi originari dalla funzione writef di BCPL che utilizzava già nel 1966 il carattere di formattazione % .

Vale anche la pena notare che Algol68 ha anche adottato la funzione printf per l'output formattato. Eppure la logica di formattazione era leggermente diversa.

    
risposta data 04.05.2016 - 00:19
fonte
19

La funzione "printf" è stata ereditata da C dalla libreria standard B. In B non era l'unica funzione del genere, ad esempio c'era anche un "printn" per stampare numeri. Vedi un riferimento per la lingua da una versione di unix precedente qui: link

    
risposta data 03.05.2016 - 22:23
fonte
6

Non è la funzione di stampa più semplice. Le funzioni di stampa più elementari sarebbero puts e putchar che stampano rispettivamente una stringa e un carattere.

f è per formattato. printf (a differenza di puts o putchar ) stampa l'output formattato , quindi stampa f . Ad esempio, può stampare un int in esadecimale, o un float arrotondato a tre posizioni decimali, o una stringa lasciata imbottita. (Sì, avete letto bene: negli anni '70 C aveva una singola funzione di stringa nella libreria standard che eseguiva più di un intero modulo npm .;)

C non ha fatto prima printf . B ha una funzione con lo stesso nome con funzionalità simili. Wikipedia identifica un'ispirazione ancora precedente in writef di BCPL.

    
risposta data 04.05.2016 - 06:39
fonte

Leggi altre domande sui tag