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

Wie übergebe ich in C und C eine variable Anzahl von Argumenten an printf/sprintf?

Barbara Streisand
Barbara StreisandOriginal
2024-11-28 17:09:11773Durchsuche

How to Pass a Variable Number of Arguments to printf/sprintf in C and C  ?

Übergabe variabler Argumente an Printf/Sprintf

In C und C werden die Funktionen printf und sprintf zum formatierten Drucken und Schreiben verwendet. Diese Funktionen ermöglichen die Angabe einer Formatzeichenfolge, die steuert, wie nachfolgende Argumente gedruckt werden. Es kann jedoch vorkommen, dass die Anzahl der zu druckenden Argumente nicht im Voraus bekannt ist. Dies wirft die Frage auf, wie eine variable Anzahl von Argumenten an diese Funktionen übergeben werden kann.

Lösung mit vfprintf

Die Standard-C-Bibliothek stellt die Funktion vfprintf bereit, die eine variable Anzahl von Argumenten verarbeiten kann. Es werden zwei obligatorische Argumente benötigt:

  • format: Ein Zeiger auf die Formatzeichenfolge.
  • argptr: Eine va_list, die die Variable enthält Argumente.

Der folgende Codeausschnitt zeigt die Verwendung vfprintf:

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

In diesem Beispiel verwendet die Error-Funktion eine Formatzeichenfolge als erstes Argument und eine beliebige Anzahl zusätzlicher Argumente. Der Zugriff auf diese Argumente erfolgt über die va_list, die mit va_start initialisiert wird. Anschließend wird die vfprintf-Funktion mit der Formatzeichenfolge und der va_list aufgerufen. Schließlich wird va_end verwendet, um die va_list zu bereinigen.

Das obige ist der detaillierte Inhalt vonWie übergebe ich in C und C eine variable Anzahl von Argumenten an printf/sprintf?. 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