sscanf, swscanf

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu stdio.h - Index


Header-Datei

stdio.h

Kategorie

Routinen für Speicher- und String-Bearbeitung

Syntax

int sscanf(const char *buffer, const char *format[, address, ...]);

int swscanf(const wchar_t *buffer, const wchar_t *format[, address, ...]);

Beschreibung

Untersucht und formatiert Eingaben aus einem String.

Anmerkung:  Einzelheiten zu den Formatbezeichnern finden Sie unter scanf-Formatbezeichner.

sscanf untersucht Zeichen für Zeichen eine Reihe von Eingabefeldern, die aus einem String gelesen werden. Darauf wird jedes Feld entsprechend den Formatbezeichnern formatiert, die in dem im Parameter format an sscanf übergebenen Format-String enthalten sind. Schließlich speichert sscanf die formatierte Eingabe unter einer der Adressen, die ihr in dem Argument übergeben wurden, das auf das Argument format folgt. Die Anzahl der Formatbezeichner und Adressen muss der Anzahl der Eingabefelder entsprechen.

sscanf kann die Untersuchung eines bestimmten Feldes abbrechen, bevor das normale Feldendezeichen (Whitespace-Zeichen) erreicht ist, oder kann aus verschiedenen Gründen die gesamte Verarbeitung beenden. Eine Erläuterung der möglichen Gründe finden Sie unter scanf.

Rückgabewert

sscanf gibt die Anzahl erfolgreich untersuchter, konvertierter und gespeicherter Eingabefelder zurück. Die untersuchten Felder, die nicht gespeichert wurden, werden nicht gezählt.

Versucht sscanf, über das Dateiende hinaus zu lesen, wird EOF zurückgegeben.

Bei einem Fehler (es wurden keine Felder gespeichert), gibt sscanf 0 zurück.

Anmerkung: sscanf geht davon aus, dass den Bezeichner "s" sich auf ein Zweibyte-Zeichen (wchar_t) bezieht, anstatt ein großes "s" oder "ls" zu erfordern, um anzugeigen, dass ein Zeiger auf ein Zweibyte-Zeichen übergeben wird.

Beispiel

#include <stdio.h>
#include <stdlib.h>
char *names[4] = {"Peter", "Mike", "Shea", "Jerry"};
#define NUMITEMS 4
int main(void)
{
   int   loop;
   char  temp[4][80];
   char  name[20];
   int   age;
   long  salary;
/* Daten, bestehend aus Name, Alter und Gehalt erstellen */
   for (loop=0; loop < NUMITEMS; ++loop)
      sprintf(temp[loop], "%s %d %ld", names[loop], random(10) + 20, random(5000) + 27500L);
/* Titelzeile anzeigen */
   printf("%4s | %-20s | %5s | %15s\n", "#", "Name", "Age", "Salary");
   printf("   --------------------------------------------------\n");
/* Daten, bestehend aus Name, Alter und Gehalt eingeben */
   for (loop=0; loop < NUMITEMS; ++loop)
      {
      sscanf(temp[loop],"%s %d %ld", &name, &age, &salary);
      printf("%4d | %-20s | %5d | %15ld\n", loop + 1, name, age, salary);
      }
   return 0;
}


Portabilität

POSIX Win32 ANSI C ANSI C++

sscanf

+

+

+

+

swscanf

+

+

+

Siehe auch