Die C-Standardbibliothek¶
Im folgenden Abschnitt sind diejenigen C-Bibliotheken beschrieben, die jederzeit
vom gcc-Compiler gefunden werden und somit in C-Programme mittels
#include eingebunden werden können, ohne dass weitere Pfadanpassungen
notwendig sind.
assert.h – Einfache Tests¶
void assert(logical_expression);Diese Funktion kann – wie eine
if-Bedingung – an beliebigen Stellen im Code eingesetzt werden. Ergibt der angegebene logische Ausdruck allerdings keinen wahren (von Null verschiedenen) Wert, so brichtassert()das Programm ab und gibt auf demstderr-Kanal als Fehlermeldung aus, welche Zeile beziehungsweise notwendige Bedingung den Absturz verursacht hat.
math.h – Mathematische Funktionen¶
double sin(double x)
double cos(double x)
double tan(double x)
double asin(double x)Gibt den Arcus-Sinus-Wert eines
-Werts an,
wobei
gelten muss.
double acos(double x)Gibt den Arcus-Cosinus-Wert eines
-Werts an,
wobei
gelten muss.
double atan(double x)Gibt den Arcus-Tangens-Wert eines
-Werts an.
double sinh(double x)Gibt den Sinus-Hyperbolicus-Wert eines
-Werts an.
double cosh(double x)Gibt den Cosinus-Hyperbolicus-Wert eines
-Werts an.
double tanh(double x)Gibt den Tangens-Hyperbolicus-Wert eines
-Werts an.
double exp(double x)Gibt den Wert der Exponentialfunktion
eines
-Werts an.
double log(double x)Gibt den Wert der natürlichen Logarithmusfunktion
an, wobei
gelten
muss.
double log10(double x)Gibt den Wert des Logarithmus zur Basis
an, wobei
gelten muss.
double pow(double x)Gibt den Wert von
an. Ein Argumentfehler liegt vor, wenn
und
gilt, oder wenn
und
nicht
ganzzahlig ist.
double sqrt(double x)Gibt den Wert der Quadratwurzel eines
-Werts an, wobei
.
double ceil(double x)Gibt den kleinsten ganzzahligen Wert als
doublean, der nicht kleiner als
ist.
double floor(double x)Gibt den größten ganzzahligen Wert als
doublean, der nicht größer als
ist.
double fabs(double x)Gibt den Absolutwert
eines
-Werts an.
double ldexp(double x, n)Gibt den Wert des Ausdrucks
an.
double frexp(double x, int *exp)Zerlegt
in eine normalisierte Mantisse im Bereich
, die als Ergebnis zurückgegeben wird, und eine
Potenz von
, die in *expabgelegt wird. Ist
gleich
Null, sind beide Teile des Resultats Null.
double modf(double x, double *ip)Zerlegt
in einen ganzzahligen Teil und einen Rest, die beide das
gleiche Vorzeichen wie
besitzen. Der ganzzahlige Teil wird bei
*ipabgelegt, der Rest wird als Ergebnis zurückgegeben.
double fmod(double x, double y)Gibt den Gleitpunktrest von
an, mit dem gleichen
Vorzeichen wie
. Wenn
gleich Null ist, hängt das Resultat
von der Implementierung ab.
cmath.h – Mathe-Funktionen für komplexe Zahlen¶
double creal(double complex z)Gibt den Realteil der komplexen Zahl
als Ergebnis zurück.double cimag(double complex z)Gibt den Imaginärteil der komplexen Zahl
als Ergebnis zurück.double cabs(double complex z)Behandelt die komplexe Zahl
wie einen zweidimensionalen Vektor in
der Zahlenebene; gibt den Betrag (die Länge) dieses Vektors als Ergebnis
zurück.
double casin(double complex z)Gibt den Arcus-Sinus-Wert der komplexen Zahl
an.
double cacos(double complex z)Gibt den Arcus-Cosinus-Wert der komplexen Zahl
an, wobei der Realteil von
im Bereich
liegen muss.
double catan(double complex x)Gibt den Arcus-Tangens-Wert einer komplexen Zahl
an.
string.h – Zeichenkettenfunktionen¶
In der Definitionsdatei <string.h> gibt es zwei Gruppen von Funktionen für
Felder und Zeichenketten. Die Namen der ersten Gruppe von Funktionen beginnen
mit mem; diese sind allgemein zur Manipulation von Feldern vorgesehen. Die
Namen der zweiten Gruppe von Funktionen beginnen mit str und ist speziell
für Zeichenketten gedacht, die mit dem Zeichen \0' abgeschlossen sind.
Wichtig: Bei der Verwendung der mem- und str-Funktionen muss der
Programmierer darauf achten, dass sich die Speicherplätze der zu kopierenden
oder zu vergleichenden Zeicherketten nicht überlappen, da das Verhalten der
Funktionen sonst nicht definiert ist.
mem-Funktionen
Die mem-Funktionen sind zur Manipulation von Speicherbereichen gedacht. Sie
behandeln den Wert \0 wie jeden anderen Wert, daher muss immer eine
Bereichslänge angegeben werden.
void * memcpy(void *str_1, const void *str_2, size_t n)Kopiert die ersten
Zeichen aus dem Array str_2in das Arraystr_1; gibtstr_1als Ergebnis zurück.
void * memmove(void *str_1, const void *str_2, size_t n)Kopiert ebenso wie memcpy() die ersten
Zeichen
des Arrays str_2in das Arraystr_1; gibtstr_1als Ergebnis zurück.memmove()funktioniert allerdings auch, wenn sich die Speicherplätze beider Arrays überlappen.
int memcmp(const void *str_1, const void *str_2, size_t n)Vergleicht die ersten
Zeichen des Arrays str_1mit dem Arraystr_2; gibt als Ergebnis einen Wert
zurück falls str_1 < str_2ist, den Wert
für str_1 == str_2, oder einen Wert
falls str_1 > str_2ist.Die Bereiche werden nach den ASCII-Codes der Anfangsbuchstaben verglichen, nicht lexikalisch.
void * memchr(const void *str, char c, size_t n)Gibt einen Zeiger auf das erste Byte mit dem Wert
cim Arraystrzurück, oderNULL, wenn das Byte innerhalb der ersten
Zeichen
nicht vorkommt.
void * memset(void *str, char c, size_t n)Setzt die ersten
Bytes des Arrays strauf den Wertc; gibtstrals Ergebnis zurück.
str-Funktionen
char * strcpy(char *str_1, const char *str_2)Kopiert eine Zeichenkette
str_2in ein Arraystr_1, inklusive\0; gibtstr_1als Ergebnis zurück.
char * strncpy(char *str_1, const char *str_2, size_t n)Kopiert höchstens
Zeichen aus der Zeichenkette str_2in die Zeichenkettestr_1, und gibtstr_1als Ergebnis zurück. Dabei wirdstr_1mit\0abgeschlossen, wennstr_2weniger als
Zeichen hat.
char * strcat(char *str_1, const char *str_2)Hängt die Zeichenkette
str_2hinten an die Zeichenkettestr_1an; gibtstr_1als Ergebnis zurück.
char * strncat(char *str_1, const char *str_2, size_t n)Fügt höchstens
Zeichen der Zeichenkette str_2hinten an die Zeichenkettestr_1an und schließtstr_1mit\0ab. Gibtstr_1als Ergebnis zurück.
int strcmp(const char *str_1, const char *str_2)Vergleicht die beiden Zeichenketten
str_1undstr_2miteinander; gibt als Ergebnis einen Wert
zurück falls str_1 < str_2ist, den Wert
für str_1 == str_2, oder einen Wert
falls
str_1 > str_2ist.Die Zeichenketten werden nach den ASCII-Codes der Anfangsbuchstaben verglichen, nicht lexikalisch.
int strncmp(const char *str_1, const char *str_2, size_t n)Vergleicht höchstens
Zeichen der Zeichenkette str_1mit der Zeichenkettestr_2; gibt einen Wert
zurück falls str_1 < str_2ist, den Wert
für str_1 == str_2, oder einen Wert
falls str_1 > str_2ist.Die Zeichenketten werden nach den ASCII-Codes der Anfangsbuchstaben verglichen, nicht lexikalisch.
char * strchr(const char *str, char c)Gibt einen Zeiger auf das erste Zeichen
cin der Zeichenkettestrals Ergebnis zurück, oderNULL, fallscnicht in der Zeichenkette enthalten ist.
char * strrchr(const char *str, char c)Gibt einen Zeiger auf das letzte Zeichen
cin der Zeichenkettestrals Ergebnis zurück, oderNULL, fallscnicht in der Zeichenkette enthalten ist.
size_t strspn(const char *str_1, const char *str_2)Gibt die Anzahl der Zeichen am Anfang der Zeichenkette
str_1als Ergebnis zurück, die in dieser Reihenfolge ebenfalls in der Zeichenkettestr_2vorkommen.
size_t strcspn(const char *str_1, const char *str_2)Gibt die Anzahl der Zeichen am Anfang der Zeichenkette
str_1als Ergebnis zurück, die in dieser Reihenfolge nicht in der Zeichenkettestr_2vorkommen.
char * strpbrk(const char *str_1, const char *str_2)Gibt einen Zeiger auf die Position in der Zeichenkette
str_1als Ergebnis zurück, an der irgendein Zeichen aus der Zeichenkettestr_2erstmals vorkommt, oderNULL, falls keines dieser Zeichen vorkommt.
char * strstr(const char *str_1, const char *str_2)Gibt einen Zeiger auf erstes Vorkommen von der Zeichenkette
str_2innerhalb der Zeichenkettestr_1als Ergebnis zurück, oderNULL, falls diese nicht vorkommt.
size_t strlen(const char *str)Gibt die Länge der Zeichenkette
strohne\0an.
char * strerror(size_t n)Gibt einen Zeiger auf diejenige Zeichenkette als Ergebnis zurück, die dem Fehler mit der Nummer
zugewiesen ist.
char * strtok(char *str_1, const char *str_2)Durchsucht die Zeichenkette
str_1nach Zeichenfolgen, die durch Zeichen aus der Zeichenkettestr_2begrenzt sind.
stdio.h – Ein- und Ausgabe¶
Die Datei stdio.h definiert Typen und Funktionen zum Umgang mit Datenströmen
(„Streams“). Ein Stream ist Quelle oder Ziel von Daten und wird mit einer Datei
oder einem angeschlossenen Gerät verknüpft.
Unter Windows muss zwischen Streams für binäre und für Textdateien
unterschieden werden, unter Linux nicht. Ein Textstream ist eine Folge von
Zeilen, die jeweils kein oder mehrere Zeichen enthalten und jeweils mit '\n'
abgeschlossen sind.
Ein Stream wird mittels der Funktion open() mit einer Datei oder einem Gerät
verbunden; die Verbindung wird mittels der Funktion close() wieder
aufgehoben. Öffnet man eine Datei, so erhält man einen Zeiger auf ein Objekt vom
Typ FILE, in welchem alle Information hinterlegt sind, die zur Kontrolle des
Stream nötig sind.
Wenn die Ausführung eines Programms beginnt, sind die drei Standard-Streams
stdin, stdout und stderr bereits automatisch geöffnet.
Dateioperationen
Die folgenden Funktionen beschäftigen sich mit Datei-Operationen. Der Typ
size_t ist der vorzeichenlose, ganzzahlige Resultattyp des
sizeof-Operators.
FILE *fopen(const char *filename, const char *mode)Öffnet die angegebene Datei; gibt als Ergebnis einen Datenstrom zurück, oder
NULLfalls das Öffnen fehlschlägt.Als Zugriffsmodus
modekann angegeben werden:"r": Textdatei zum Lesen öffnen"w": Textdatei zum Schreiben neu erzeugen (gegebenenfalls alten Inhalt wegwerfen)"a": Text anfügen; Datei zum Schreiben am Dateiende öffnen oder erzeugen"r+": Textdatei zum Ändern öffnen (Lesen und Schreiben)"w+": Textdatei zum Ändern erzeugen (gegebenenfalls alten Inhalt wegwerfen)"a+": Datei neu erzeugen oder zum Ändern öffnen und Text anfügen (Schreiben am Ende)
FILE *freopen(const char *filename, const char *mode, FILE *stream)Öffnet die angegebene Datei für den angegebenen Zugriffsmodus und verknüpft den Datenstrom
streamdamit. Als Ergebnis wirdstreamzurück gegeben, oderNullfalls ein Fehler auftritt.Mit
freopen()ändert man normalerweise die Dateien, die mitstdin,stdoutoderstderrverknüpft sind.
int fflush(FILE *stream)Sorgt bei einem Ausgabestrom dafür, dass gepufferte, aber noch nicht geschriebene Daten geschrieben werden; bei einem Eingabestrom ist der Effekt undefiniert. Die Funktion gibt normalerweise
NULLals Ergebnis zurück, oderEOF(Konstante mit Wert-1), falls ein Schreibfehler auftritt.fflush(NULL)bezieht sich auf alle offenen Dateien.
int feof(FILE *stream);Prüft, ob der angegebene File-Pointer auf das Ende einer Datei zeigt. Die Funktion gibt normalerweise
0als Ergebnis zurück, oder einen Wert ungleich Null, wenn das Ende der Datei erreicht ist.
int ferror(FILE *stream);Jede
FILE-Struktur besitzt eine Steuervariable („Flag“) namenserror.ferror()prüft, ob dieses Flag gesetzt ist, was beispielsweise durch einen Fehler beim Lesen oder Schreiben verursacht wird. Die Funktion gibt normalerweise0als Ergebnis zurück, oder einen Wert ungleich Null, wenn das Fehler-Flag des File-Pointers gesetzt ist.
int fclose(FILE *stream)Schreibt noch nicht geschriebene Daten für
stream, wirft noch nicht gelesene, gepufferte Eingaben weg, gibt automatisch angelegte Puffer frei und schließt den Datenstrom. Die Funktion gibt normalerweiseNULLals Ergebnis zurück, oderEOF(Konstante mit Wert-1), falls ein Fehler auftritt.
int remove(const char *filename)Löscht die angegebene Datei, so dass ein anschließender Versuch, sie zu öffnen, fehlschlagen wird. Bei einem Fehler gibt die Funktion einen von Null verschiedenen Wert zurück.
int rename(const char *oldname, const char *newname)Ändert den Namen einer Datei. Bei einem Fehler gibt die Funktion einen von Null verschiedenen Wert zurück.
FILE * tmpfile(void)Erzeugt eine temporäre Datei mit Zugriffsmodus
"wb+", die automatisch gelöscht wird, wenn der Zugriff abgeschlossen wird, oder wenn das Programm normal zu Ende geht. Als Ergebnis gibttmpfile()einen Datenstrom zurück, oderNULLfalls die Datei nicht erzeugt werden konnte.
char * tmpnam(char s[L_tmpnam])tmpnam(NULL)erzeugt eine Zeichenkette, die nicht der Name einer existierenden Datei ist, und gibt einen Zeiger auf einen internen Vektor im statischen Speicherbereich als Ergebnis zurück.tmpnam(s)speichert die Zeichenkette insund gibtsals Ergebnis zurück; insmüssen wenigstensL_tmpnamZeichen abgelegt werden können.Bei jedem Aufruf erzeugt die Funktion einen anderen Namen; man kann höchstens von
TMP_MAXverschiedenen Namen während der Ausführung des Programms ausgehen. Zu beachten ist, dass ein Name und keine Datei erzeugt wird.
int setvbuf(FILE *stream, char *buf, int mode, size_t size)Kontrolliert die Pufferung bei einem Datenstrom; die Funktion muss aufgerufen werden, bevor gelesen oder geschrieben wird, und vor allen anderen Operationen. Hat
modeden Wert_IOFBF, so wird vollständig gepuffert,_IOLBFsorgt für zeilenweise Pufferung bei Textdateien und_IONBFverhindert Puffern. Wennbufnicht gleichNULLiist, wirdbufals Puffer verwendet; andernfalls wird ein Puffer angelegt.sizelegt die Puffergröße fest.Bei einem Fehler gibt die Funktion einen von Null verschiedenen Wert zurück.
void setbuf(FILE *stream, char *buf)Wenn
bufden WertNULLhat, wird der Datenstrom nicht gepuffert; andernfalls istsetbufäquivalent zu(void) setvbuf(stream, buf, _IOFBF, BUFSIZ).
Ändern bedeutet, dass die gleiche Datei gelesen und geschrieben werden darf;
fflush() oder eine Funktion zum Positionieren in Dateien muss zwischen einer
Lese- und einer Schreiboperation oder umgekehrt aufgerufen werden. Dateinamen
sind auf FILENAME_MAX Zeichen begrenzt, höchstens FOPEN_MAX Dateien
können gleichzeitig offen sein.
Aus- und Eingabe
int fputs(const char *str, FILE *stream)Schreibt die Zeichenkette
strin die mit dem File-Pointer angegebene Datei. Als Ergebnis gibt die Funktion einen nicht-negativen Wert als Ergebnis zurück, oderEOF(Konstante mit Wert-1), wenn ein Fehler aufgetreten ist.
int fprintf(FILE *stream, const char *format, ...)Die Funktion
fprintf()wandelt Ausgaben um und schreibt sie instreamunter Kontrolle vonformat. Als Ergebnis gibt sie die Anzahl der geschriebenen Zeichen zurück; der Wert ist negativ, wenn ein Fehler aufgetreten ist.int printf(const char *format, ...)printf(...)ist äquivalent zufprintf(stdout, ...). Die formatierte Ausgabe derprintf()-Funktion ist im Abschnitt Ausgabe und Eingabe näher beschrieben.
int sprintf(char *s, const char *format, ...)Die Funktion
sprintf()funktioniert wieprintf(), nur wird die Ausgabe in das Zeichenarraysgeschrieben und mit\0abgeschlossen.smuss groß genug für das Resultat sein. Im Ergebniswert wird\0nicht mitgezählt.
stdlib.h – Hilfsfunktionen¶
Die Definitionsdatei <stdlib.h> vereinbart Funktionen zur Umwandlung von
Zahlen, für Speicherverwaltung und ähnliche Aufgaben.
double atof(const char *s)Wandelt die Zeichenkette
sindoubleum. Beendet die Umwandlung beim ersten unbrauchbaren Zeichen.
int atoi(const char *s)Wandelt die Zeichenkette
sinintum. Beendet die Umwandlung beim ersten unbrauchbaren Zeichen.
long atol(const char *s)Wandelt die Zeichenkette
sinlongum. Beendet die Umwandlung beim ersten unbrauchbaren Zeichen.
double strtod(const char *s, char **endp)Wandelt den Anfang der Zeichenkette
sindoubleum, dabei wird Zwischenraum am Anfang ignoriert. Die Umwandlung wird beim ersten unbrauchbaren Zeichen beendet. Die Funktion speichert einen Zeiger auf den eventuell nicht umgewandelten Rest der Zeichenkette bei*endp, fallsendpnichtNULList. Falls das Ergebnis zu groß ist, (also bei einem Overflow), wird als ResultatHUGE_VALmit dem korrekten Vorzeichen geliefert; liegt das Ergebnis zu dicht bei Null (also bei einem Underflow), wird Null geliefert. In beiden Fällen erhälterrnoden WertERANGE.
long strtol(const char *s, char **endp, int base)Wandelt den Anfang der Zeichenkette
sinlongum, dabei wird Zwischenraum am Anfang ignoriert. Die Umwandlung wird beim ersten unbrauchbaren Zeichen beendet. Die Funktion speichert einen Zeiger auf den eventuell nicht umgewandelten Rest der Zeichenkette bei*endp, fallsendpnichtNULList. Hatbaseeinen Wert zwischen
und
, erfolgt die Umwandlung unter der Annahme, dass die Eingabe in
dieser Basis repräsentiert ist.Hat
baseden Wert Null, wird als Basis
,
oder
verwendet, je nach s; eine führende Null bedeutet dabei oktal und0xoder0Xzeigen eine hexadezimale Zahl an. In jedem Fall stehen Buchstaben für die Ziffern von
bis base-l; bei Basis16darf0xoder0Xam Anfang stehen. Wenn das Resultat zu groß werden würde, wird je nach VorzeichenLONG_MAXoderLONG_MINgeliefert underrnoerhält den WertERANGE.
unsigned long strtoul(const char *s, char **endp, int base)Funktioniert wie
strtol(), nur ist der Resultattypunsigned longund der Fehlerwert istULONG_MAX.
int rand(void)Gibt als Ergebnis eine ganzzahlige Pseudo-Zufallszahl im Bereich von
bis RAND_MAXzurück;RAND_MAXist mindestens32767.
void srand(unsigned int seed)Benutzt
seedals Ausgangswert für eine neue Folge von Pseudo-Zufallszahlen. Der erste Ausgangswert ist
.
void * calloc(size_t nobj, size_t size)Gibt als Ergebnis einen Zeiger auf einen Speicherbereich für einen Vektor von
nobjObjekten zurück, jedes mit der Größesize, oderNULL, wenn die Anforderung nicht erfüllt werden kann. Der Bereich wird mit Null-Bytes initialisiert.
void * malloc(size_t size)Gibt einen Zeiger auf einen Speicherbereich für ein Objekt der Größe
sizezurück, oderNULL, wenn die Anforderung nicht erfüllt werden kann. Der Bereich ist nicht initialisiert.
void * realloc(void *p, size_t size)Ändert die Größe des Objekts, auf das der Pointer
pzeigt, insizeab. Bis zur kleineren der alten und neuen Größe bleibt der Inhalt unverändert. Wird der Bereich für das Objekt größer, so ist der zusätzliche Bereich nicht initialisiert.realloc()liefert einen Zeiger auf den neuen Bereich oderNULL, wenn die Anforderung nicht erfüllt werden kann; in diesem Fall wird der Inhalt nicht verändert.
void free(void *p)Gibt den Bereich frei, auf den der Pointer
pzeigt; die Funktion hat keinen Effekt, wennpden WertNULLhat.pmuss auf einen Bereich zeigen, der zuvor mitcalloc(),malloc()oderrealloc()angelegt wurde.
void abort(void)Sorgt für eine anormale, sofortige Beendigung des Programms.
void exit(int status)Beendet das Programm normal: Dabei werden atexit()-Funktionen in der umgekehrten Reihenfolge ihrer Hinterlegung aufgerufen, Puffer offener Dateien werden geschrieben, offene Ströme abgeschlossen, und die Kontrolle geht an die Umgebung des Programms zurück. Welcher
statusan die Umgebung des Programms geliefert wird, hängt von der Implementierung ab, aberNullgilt als erfolgreiches Ende. Die WerteEXIT_SUCCESS(Wert:0) undEXIT_FAILURE(Wert:1) können ebenfalls angegeben werden.
int atexit(void (*fcn)(void))Hinterlegt die Funktion
fcn, damit sie aufgerufen wird, wenn das Programm normal endet, und liefert einen von Null verschiedenen Wert, wenn die Funktion nicht hinterlegt werden kann.
int system(const char *s)Gibt die Zeichenkette
san die Umgebung zur Ausführung. Hatsden WertNULL, so liefertsystem()einen von Null verschiedenen Wert, wenn es einen Kommandoprozessor gibt. WennsvonNULLverschieden ist, dann ist der Resultatwert von der Implementierung abhängig.
char * getenv(const char *name)Gibt die zu
namegehörende Zeichenkette aus der Umgebung als Ergebnis zurück, oderNULL, wenn keine Zeichenkette existiert. Die Details hängen von der Implementierung ab.
void * bsearch(const void *key, const void *base, size_t n, size_t size, int (*cmp)(const void *keyval, const void *datum))Durchsucht
base[0]bisbase[n-l]nach einem Eintrag, der gleich*keyist. Die Funktioncmpmuss einen negativen Wert liefern, wenn ihr erstes Argument (der Suchschlüssel) kleiner als ihr zweites Argument (ein Tabelleneintrag) ist, Null, wenn beide gleich sind, und sonst einen positiven Wert.Die Elemente des Arrays base müssen aufsteigend sortiert sein. In
sizemuss die Größe eines einzelnen Elements übergeben werden.bsearch()gibt als Ergebnis einen Zeiger auf das gefundene Element zurück, oderNULL, wenn keines existiert.
void qsort(void *base, size_t n, size_t size, int (*cmp)(const void *, const void *))Sortiert ein Array
base[0]bisbase[n-1]von Objekten der Größesizein aufsteigender Reihenfolge. Für die Vergleichsfunktioncmpgilt das gleiche wie beibsearch().
int abs(int x)Gibt den den absoluten Wert (Betrag)
von
als intan.
long labs(long x)Gibt den absoluten Wert (Betrag)
von
als longan.
div_t div(int n, int z)Gibt den Quotienten und Rest von
an. Die Ergebnisse
werden in den int-Komponentenquotundremeiner Struktur vom Typdiv_tabgelegt.
ldiv_t ldiv(long n, long z)Gibt den Quotienten und Rest von
an. Die Ergebnisse
werden in den long-Komponentenquotundremeiner Struktur vom Typldiv_tabgelegt.
time.h – Funktionen für Datum und Uhrzeit¶
Die Definitionsdatei time.h vereinbart Typen und Funktionen zum Umgang mit
Datum und Uhrzeit. Manche Funktionen verarbeiten die Ortszeit, die von der
Kalenderzeit zum Beispiel wegen einer Zeitzone abweicht. clock_t und
time_t sind arithmetische Typen, die Zeiten repräsentieren, und struct
tm enthält die Komponenten einer Kalenderzeit:
struct tm
{
// Sekunden nach der vollen Minute (0, 61)
// (Die zusätzlich möglichen Sekunden sind Schaltsekunden)
int tm_sec;
// Minuten nach der vollen Stunde (0, 59)
int tm_min;
// Stunden seit Mitternacht (0, 23)
int tm_hour;
// Tage im Monat (1, 31)
int tm_mday;
// Monate seit Januar (0, 11)
int tm_mon;
// Jahre seit 1900
int tm_year;
// Tage seit Sonntag (0, 6)
int tm_wday;
// Tage seit dem 1. Januar (0, 365)
int tm_yday;
// Kennzeichen für Sommerzeit
int tm_isdst;
}
tm_isdst ist positiv, wenn Sommerzeit gilt, Null, wenn Sommerzeit nicht
gilt, und negativ, wenn die Information nicht zur Verfügung steht.
clock_t clock(void)Gibt die Rechnerkern-Zeit an, die das Programm seit Beginn seiner Ausführung verbraucht hat, oder
-1, wenn diese Information nicht zur Verfügung steht.clock()/CLOCKS_PER_SECist eine Zeit in Sekunden.
time_t time(time_t *tp)Gibt die aktuelle Kalenderzeit an, oder
-1, wenn diese nicht zur Verfügung steht. WenntpvonNULLverschieden ist, wird der Resultatwert auch bei*tpabgelegt.
double difftime(time_t time2, time_t timel)Gibt die Differenz der Zeitangaben
time2 - timelin Sekunden an.
time_t mktime(struct tm *tp)Wandelt die Ortszeit in der Struktur
*tpin Kalenderzeit um, die so dargestellt wird wie beitime(). Die Komponenten erhalten Werte in den angegebenen Bereichen.mktime()gibt die Kalenderzeit als Ergebnis zurück, oder den Wert-1, wenn diese nicht dargestellt werden kann.
size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)Formatiert Datum und Zeit aus
*tpin der Zeichenkettesgemäßfmt, analog zu einemprintf-Format. Gewöhnliche Zeichen (insbesondere auch das abschließende\0) werden nachskopiert. Jedes%...wird gemäß der unten folgenden Liste ersetzt, wobei Werte verwendet werden, die der lokalen Umgebung entsprechen.Es werden höchstens
smaxZeichen in der Zeichenkettesabgelegt. Als Ergebnis gibtstrftime()die Anzahl der resultierenden Zeichen zurück, mit Ausnahme von\0. Wenn mehr alssmaxZeichen erzeugt wurden, gibtstrftimeden Wert Null als Ergebnis zurück.Umwandlungszeichen für den Formatstring
fmt:%aabgekürzter Name des Wochentags. %Avoller Name des Wochentags. %babgekürzter Name des Monats. %Bvoller Name des Monats. %clokale Darstellung von Datum und Zeit. %dTag im Monat (01 - 31). %HStunde (00 - 23). %IStunde (01 - 12). %jTag im Jahr (001 - 366). %mMonat (01 - 12). %MMinute (00 - 59). %plokales Äquivalent von AM oder PM. %SSekunde (00 - 61). %UWoche im Jahr (Sonntag ist erster Tag) (00 - 53). %wWochentag (0 - 6, Sonntag ist 0). %WWoche im Jahr (Montag ist erster Tag) (00 - 53). %xlokale Darstellung des Datums. %Xlokale Darstellung der Zeit. %yJahr ohne Jahrhundert (00 - 99). %YJahr mit Jahrhundert. %ZName der Zeitzone, falls diese existiert. %%%. (Gibt ein % aus)
Die folgenden vier Funktionen liefern Zeiger auf statische Objekte, die von anderen Aufrufen überschrieben werden können.
char * asctime(const struct tm *tp)Konstruiert aus der Zeit in der Struktur
*tpeine Zeichenkette folgender Form:Sun Jan 3 15:14:13 1988\n\0
char * ctime(const time_t *tp)Verwandelt die Kalenderzeit
*tpin Ortszeit; dies ist äquivalent zuasctime(localtime(tp))
struct tm * gmtime(const time_t *tp)Verwandelt die Kalenderzeit
*tpin Coordinated Universal Time (UTC). Die Funktion liefertNULL, wenn UTC nicht zur Verfügung steht. Der Namegmtimehat historische Bedeutung.
struct tm * localtime(const time_t *tp)Verwandelt die Kalenderzeit
*tpin Ortszeit.