2012-05-25 16 views
6

Ho un dubbio molto sciocco. Quando stavo insegnando al mio amico C-programma, mi ha chiesto "perché usiamo printf, non può essere printg o solo stampa". Non potevo rispondergli. Quindi c'è davvero una ragione dietro la scelta di printf in programmazione C?C - Perché printf e non solo stampa?

+1

Ho appena iniziato ad apprendere la programmazione in C ... Mi scuso se questa domanda è sciocca ... – Sharan

+0

Non esiste una domanda stupida. Aspetta, sì, c'è. Ma questo non è davvero un esempio di uno. –

+4

Cosa c'è di vago o ambiguo riguardo alla domanda? Come non è ragionevolmente rispondibile? Ci sono certamente risposte ragionevoli. (Sembra anche divertente che K-ballo fosse una delle persone che ha chiuso questo nonostante abbia la risposta accettata.) – jamesdlin

risposta

14

Il f in printf corrisponde a formattato, è utilizzato per la stampa con output formattato.

+0

Grazie ... Quindi se scrivo solo stampa, funzionerà ... – Sharan

+3

@Sharan Chandran: Non c'è Funzione 'print' nella libreria standard C. –

+3

@SharanChandran La versione non formattata viene chiamata 'puts'. –

0

printf consente la formattazione, mentre la stampa non lo fa. Inoltre, la stampa non esiste in C. Non so nemmeno cosa sia Printg.

+0

Non so che cosa 'print' sia o ... –

+0

sì, ho appena ricordato che non esiste anche :) è passato molto tempo da quando ho codificato qualcosa in diretta c –

0

Se non sbaglio, printf sta per "Stampa dati formattati su stdout".

+0

Just" print formatted "- 'stdout' è dato per scontato fino a quando non si specifica diversamente con' fprintf'. –

0

Come altri hanno notato, il trascinamentof indica output formattato (o ingresso formattato per funzioni nel scanf famiglia).

Tuttavia, aggiungo che la distinzione è importante perché è importante che i chiamanti sappiano che la stringa avrà una semantica specifica per il formato. Ad esempio, non farlo:

char* s = get_some_user_input(); 
printf(s); // WRONG. Instead use: printf("%s", s) or fputs(stdout, s) 

Se s accade per contenere % caratteri, stamparlo direttamente con printf può causare l'accesso argomenti inesistenti, che porta a un comportamento indefinito (e questo è un motivo di alcune vulnerabilità di sicurezza). Tenere presente questa convenzione di denominazione se si definiscono le proprie funzioni variadic printf -like.

Problemi correlati