B.7 <inttypes.h> (C99) 

Der Header <inttypes.h> ist eine Ergänzung bzw. Erweiterung des Headers <stdint.h> (der natürlich auch inkludiert ist). <inttypes.h> definiert einige Makros (genauer Stringliterale), die als Konvertierungsspezifizierer für Funktionen der printf- und scanf-Familie verwendet werden können. Des Weiteren finden Sie in der Headerdatei den Struktur-Typ imaxdiv_t und weitere Funktionen.
Der Struktur-Typ imaxdiv_t enthält zwei Argumente vom Typ intmax_t und wird von der Funktion imaxdiv() zurückgegeben:
#include <inttypes.h>
imaxdiv_t imaxdiv(intmax_t numer, intmax_t denom);
Die Funktion imaxdiv() berechnet hierbei den Quotienten und den Rest einer Division von Ganzzahlen mit dem Typ intmax_t (definiert in <stdint.h>).
Weitere Funktionen der Headerdatei <inttypes.h> sind:
Funktion | Beschreibung |
intmax_t imaxabs(intmax_t j); |
Liefert den absoluten Wert einer ganzen Zahl vom Typ intmax_t. |
intmax_t strtoimax(
const char * restrict nptr,
char ** restrict endptr,
int base); |
Konvertiert einen String in einen ganzzahligen Wert vom Typ intmax_t. |
uintmax_t strtoumax(
const char * restrict nptr,
char ** restrict endptr,
int base); |
Konvertiert einen String in einen ganzzahligen Wert vom Typ uintmax_t. |
intmax_t wcstoimax(
const wchar_t * restrict nptr,
wchar_t ** restrict endptr,
int base); |
Konvertiert einen String mit breiten Zeichen in einen ganzzahligen Wert vom Typ intmax_t. |
uintmax_t wcstoumax(
const wchar_t * restrict nptr,
wchar_t ** restrict endptr,
int base); |
Konvertiert einen String mit breiten Zeichen in einen ganzzahligen Wert vom Typ uintmax_t. |
Die Makros der printf-Familie beginnen alle mit dem Präfix PRI, und die Makros der scanf-Familie beginnen mit dem Präfix SCN. Danach folgt der Konvertierungsspezifizierer d, i, o, x oder X mit dem Typnamen. Für jeden in <stdint.h> definierten Typ gibt es ein Makro. Bei der Übersicht der Makros müssen Sie lediglich noch den Buchstaben N des Makronamens durch die Bit-Breite des Typs austauschen (in der Regel 8, 16, 32 oder 64). Hier sehen Sie alle Makros für die Konvertierungsspezifizierer d, i, o, x oder X (bei scanf() gibt es den Konvertierungsspezifizierer X nicht):
// printf-Makros für signed integers PRIdN PRIdLEASTN PRIdFASTN PRIdMAX PRIdPTR PRIiN PRIiLEASTN PRIiFASTN PRIiMAX PRIiPTR // printf-Makros für unsigned integers PRIoN PRIoLEASTN PRIoFASTN PRIoMAX PRIoPTR PRIuN PRIuLEASTN PRIuFASTN PRIuMAX PRIuPTR PRIxN PRIxLEASTN PRIxFASTN PRIxMAX PRIxPTR PRIXN PRIXLEASTN PRIXFASTN PRIXMAX PRIXPTR // scanf-Makros für signed integers SCNdN SCNdLEASTN SCNdFASTN SCNdMAX SCNdPTR SCNiN SCNiLEASTN SCNiFASTN SCNiMAX SCNiPTR // scanf-Makros für unsigned integers SCNoN SCNoLEASTN SCNoFASTN SCNoMAX SCNoPTR SCNuN SCNuLEASTN SCNuFASTN SCNuMAX SCNuPTR SCNxN SCNxLEASTN SCNxFASTN SCNxMAX SCNxPTR