Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
19.3 Hilfsfunktionen: <br />
Die Def<strong>in</strong>itionsdatei vere<strong>in</strong>bart Funktionen zur Umwandlung von Zahlen, für Speicherverwaltung<br />
<strong>und</strong> ähnliche Aufgaben.<br />
double atof(const char *s) atof wandelt den Str<strong>in</strong>g s <strong>in</strong> double um. Beendet <strong>die</strong> Umwandlung beim<br />
ersten unbrauchbaren Zeichen.<br />
<strong>in</strong>t atoi(const char *s) atoi wandelt den Str<strong>in</strong>g s <strong>in</strong> <strong>in</strong>t um. Beendet <strong>die</strong> Umwandlung beim ersten<br />
unbrauchbaren Zeichen.<br />
long atol(const char *s) atol wandelt den Str<strong>in</strong>g s <strong>in</strong> long um. Beendet <strong>die</strong> Umwandlung beim ersten<br />
unbrauchbaren Zeichen.<br />
double strtod(const char *s, char **endp)strtod wandelt den Anfang der Zeichenkette s <strong>in</strong> double um, dabei wird<br />
Zwischenraum am Anfang ignoriert. Die Umwandlung wird beim ersten<br />
unbrauchbaren Zeichen beendet. Die Funktion speichert e<strong>in</strong>en Zeiger auf<br />
den ev. nicht umgewandelten Rest der Zeichenkette bei *endp, falls endp<br />
nicht NULL ist. Falls das Ergebnis zu gross ist, (also bei overflow), wird<br />
als Resultat HUGE_VAL mit dem korrekten Vorzeichen geliefert; liegt das<br />
Ergebnis zu dicht bei Null (also bei <strong>und</strong>erflow), wird Null geliefert. In beiden<br />
Fällen erhält errno den Wert ERANGE.<br />
long strtol(const char *s, char **endp, <strong>in</strong>t base)<br />
strtol wandelt den Anfang der Zeichenkette s <strong>in</strong> long um, dabei wird Zwischenraum<br />
am Anfang ignoriert. Die Umwandlung wird beim ersten unbrauchbaren<br />
Zeichen beendet. Die Funktion speichert e<strong>in</strong>en Zeiger auf den<br />
ev. nicht umgewandelten Rest der Zeichenkette bei *endp, falls endp nicht<br />
NULL ist. Hat base e<strong>in</strong>en Wert zwischen 2 <strong>und</strong> 36, erfolgt <strong>die</strong> Umwandlung<br />
unter der Annahme, dass <strong>die</strong> E<strong>in</strong>gabe <strong>in</strong> <strong>die</strong>ser Basis repräsentiert ist.<br />
Hat base den Wert Null, wird als Basis 8, 10 oder 16 verwendet, je nach s;<br />
e<strong>in</strong>e führende Null bedeutet dabei oktal <strong>und</strong> 0x oder 0X zeigen e<strong>in</strong>e hexadezimale<br />
Zahl an. In jedem Fall stehen Buchstaben für <strong>die</strong> Ziffern von 10<br />
bis base-l; bei Basis 16 darf 0x oder 0X am Anfang stehen. Wenn das Resultat<br />
zu gross werden würde, wird je nach Vorzeichen LONG_MAX oder<br />
LONG_MIN geliefert <strong>und</strong> errno erhält den Wert ERANGE.<br />
unsigned long strtoul(const char *s, char **endp, <strong>in</strong>t base)<br />
strtoul funktioniert wie strtol, nur ist der Resultattyp unsigned long <strong>und</strong> der<br />
Fehlerwert ist ULONG_MAX.<br />
<strong>in</strong>t rand(void) rand liefert e<strong>in</strong>e ganzzahlige Pseudo-Zufallszahl im Bereich von 0 bis<br />
RAND_MAX; <strong>die</strong>ser Wert ist m<strong>in</strong>destens 32767.<br />
void srand(unsigned <strong>in</strong>t seed) srand benutzt seed als Ausgangswert für e<strong>in</strong>e neue Folge von Pseudo-<br />
Zufallszahlen. Der erste Ausgangswert ist 1. Vor erstmaliger Benutzung<br />
von rand() sollte <strong>in</strong> jedem Programm e<strong>in</strong>mal (Z.B. zu Beg<strong>in</strong>n) srand() aufgerufen<br />
werden, z. B: srand(time(NULL)) (Die aktuelle Zeit reicht meistens<br />
als zufälliger Startwert).<br />
void *calloc(size_t nobj, size_t size) calloc liefert e<strong>in</strong>en Zeiger auf e<strong>in</strong>en Speicherbereich für e<strong>in</strong>en Vektor von<br />
nobj Objekten, jedes mit der Grösse size, oder NULL, wenn <strong>die</strong> Anforderung<br />
nicht erfüllt werden kann. Der Bereich wird mit Null-Bytes <strong>in</strong>itialisiert.<br />
void *malloc(size_t size) malloc liefert e<strong>in</strong>en Zeiger auf e<strong>in</strong>en Speicherbereich für e<strong>in</strong> Objekt der<br />
Grösse size oder NULL, wenn <strong>die</strong> Anforderung nicht erfüllt werden kann.<br />
Der Bereich ist nicht <strong>in</strong>itialisiert.<br />
void *realloc(void *p, size_t size) realloc ändert <strong>die</strong> Grösse des Objekts, auf das p zeigt, <strong>in</strong> size ab. Bis zur<br />
kle<strong>in</strong>eren der alten <strong>und</strong> neuen Grösse bleibt der Inhalt unverändert. Wird<br />
der Bereich für das Objekt grösser, so ist der zusätzliche Bereich un<strong>in</strong>itialisiert.<br />
realloc liefert e<strong>in</strong>en Zeiger auf den neuen Bereich oder NULL, wenn<br />
<strong>die</strong> Anforderung nicht erfüllt werden kann; <strong>in</strong> <strong>die</strong>sem Fall wird der Inhalt<br />
nicht verändert.<br />
void free(void *p) free gibt den Bereich frei, auf den p zeigt; <strong>die</strong> Funktion hat ke<strong>in</strong>en Effekt,<br />
wenn p den Wert NULL hat. p muss auf e<strong>in</strong>en Bereich zeigen, der zuvor<br />
mit calloc, malloc oder realloc angelegt wurde.<br />
void abort(void) abort sorgt für e<strong>in</strong>e anormale, sofortige Beendigung des Programms.<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 70/147