was ist der Unterschied zwischen printf und Funktionen vprintf Familien-Funktion, und Wann sollte ich einen über den anderen?
Verstehe ich, dass der Unterschied zwischen den printf
fprintf
sprintf
etc Funktionen und die vprintf
vfprintf
vsprintf
etc funktioniert, hat damit zu tun, wie Sie sich mit der Funktion Argumente. Aber wie konkret? Gibt es eigentlich einen Grund, einen über den anderen? Soll ich einfach immer verwenden printf
als das ist eine weitere gemeinsame Sache, um zu sehen, in C, oder gibt es einen berechtigten Grund zu Holen vprintf
statt?
InformationsquelleAutor der Frage Carson Myers | 2009-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
printf()
und Freunde sind für den normalen Gebrauch.vprintf()
und Freunde sind für, wenn Sie wollen, schreiben Sie Ihre eigenenprintf()
-like-Funktion. Angenommen, Sie möchten eine Funktion schreiben, drucken Fehler:Werden Sie feststellen, dass Sie nicht passieren können
args
zuprintf()
daprintf()
nimmt viele Argumente, die eher als eineva_list
argument. Dievprintf()
Funktionen, jedoch tun nehmenva_list
argument statt einer Variablen Zahl von Argumenten, so hier ist die fertige version:InformationsquelleAutor der Antwort Chris Lutz
Wollen Sie nie verwenden
vprintf()
direkt, aber es ist unglaublich praktisch, wenn Sie brauchen, um z.B. wickelnprintf()
. Für diese Fälle legen Sie mit der top-level-Funktion mit Variablen Argumenten (...). Dann werden Sie sammeln diese in einemva_list
Mach deine Bearbeitung, und schließlich rufenvprintf()
auf dieva_list
um den Ausdruck geschieht.InformationsquelleAutor der Antwort unwind
Die größte Schwierigkeit mit variadic argument nicht, dass es eine variable Anzahl von Argumenten aber, dass es keine Namen, die mit jedem argument. Die va_start, va_arg-Makros analysieren die Argumente, die im Speicher (in den meisten C-Compiler sind Sie auf den stack) mit dem Text-Informationen, die in den format-string-vgl. Kernighan und Ritchie, zweite Auflage, Abschnitt 7.3.
InformationsquelleAutor der Antwort drlolly