Heim >Backend-Entwicklung >C++ >Wie kann ich eine variable Anzahl von Argumenten an printf/sprintf übergeben?

Wie kann ich eine variable Anzahl von Argumenten an printf/sprintf übergeben?

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 16:26:111010Durchsuche

How Can I Pass a Variable Number of Arguments to printf/sprintf?

Variable Argumente an printf/sprintf übergeben

Bei der Programmierung besteht häufig die Notwendigkeit, Text oder Daten variabler Länge zu formatieren und anzuzeigen. Eine Aufgabe, die üblicherweise von Funktionen wie printf und sprintf erledigt wird. Diese Funktionen erfordern jedoch normalerweise eine feste Anzahl von Argumenten. Wie können wir eine variable Anzahl von Argumenten an diese Funktionen übergeben?

Die Lösung: Verwendung von va_*-Funktionen

Die C-Sprache stellt eine Reihe von Funktionen mit dem Präfix „va_“ bereit. ", die es uns ermöglichen, mit Argumentlisten variabler Länge zu arbeiten. Zu diesen Funktionen gehören va_start, va_arg und va_end.

Um eine variable Anzahl von Argumenten an printf oder sprintf zu übergeben, können wir die folgenden Schritte verwenden:

  1. Deklarieren Sie eine va_list-Variable zum Speichern die Argumentliste.
  2. Rufen Sie va_start mit der Variablen va_list und dem letzten bekannten Wert auf Argument.
  3. Verwenden Sie va_arg, um jedes Argument aus der va_list abzurufen.
  4. Übergeben Sie die abgerufenen Argumente an die printf- oder sprintf-Funktionen.
  5. Rufen Sie va_end auf, um wann zu bereinigen fertig.

Beispiel:

#include <stdio.h>
#include <stdarg.h>

class MyClass {
public:
    void Error(const char* format, ...) {
        va_list argptr;
        va_start(argptr, format);
        vfprintf(stderr, format, argptr);
        va_end(argptr);
    }
};

In diesem Beispiel akzeptiert die Error-Methode eine Formatzeichenfolge und eine variable Anzahl von Argumenten. Es verwendet va_arg, um die Argumente abzurufen, und ruft dann vfprintf auf, um den Text zu formatieren und an stderr auszugeben.

Hinweis:

Es ist zwar möglich, vsprintf anstelle von vfprintf zu verwenden, Dies wird nicht empfohlen, da es anfällig für Pufferüberläufe ist.

Das obige ist der detaillierte Inhalt vonWie kann ich eine variable Anzahl von Argumenten an printf/sprintf übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn