Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 20 Weitere Headerdateien und ihre Funktionen (ANSI C)
Pfeil 20.1 <assert.h> – Testmöglichkeiten und Fehlersuche
Pfeil 20.2 <ctype.h> – Zeichenklassifizierung und Umwandlung
Pfeil 20.3 Mathematische Funktionen – <math.h>, <tgmath.h> und <complex.h>
Pfeil 20.3.1 Funktionen für reelle und komplexe Gleitpunkttypen
Pfeil 20.3.2 Funktionen nur für reelle Gleitpunkttypen
Pfeil 20.3.3 Funktionen nur für komplexe Gleitpunkttypen
Pfeil 20.3.4 Typengenerische Makros – <tgmath.h>
Pfeil 20.3.5 Gleitpunktwerte klassifizieren
Pfeil 20.3.6 Makro zum Vergleichen von reellen Zahlen
Pfeil 20.3.7 Zugriff auf die Gleitpunkt-Umgebung – <fenv.h>
Pfeil 20.4 <stdlib.h>
Pfeil 20.4.1 Programmbeendigung – »exit()«, »_exit()«, »atexit()« und »abort()«
Pfeil 20.4.2 Strings in numerische Werte konvertieren
Pfeil 20.4.3 Bessere Alternative – Strings in numerische Werte konvertieren
Pfeil 20.4.4 Zufallszahlen
Pfeil 20.4.5 Absolutwerte, der Quotient und der Rest von Divisionen
Pfeil 20.4.6 Suchen und Sortieren – »qsort()« und »bsearch()«
Pfeil 20.4.7 system()
Pfeil 20.5 <locale.h> – länderspezifische Eigenheiten
Pfeil 20.6 Nicht-lokale Sprünge – <setjmp.h>
Pfeil 20.7 <signal.h>
Pfeil 20.8 <string.h> – die »mem…«-Funktionen zur Speichermanipulation
Pfeil 20.8.1 »memchr()« – Suche nach einzelnen Zeichen
Pfeil 20.8.2 »memcmp()« – bestimmte Anzahl von Bytes vergleichen
Pfeil 20.8.3 »memcpy()« – bestimmte Anzahl von Bytes kopieren
Pfeil 20.8.4 »memmove()« – bestimmte Anzahl von Bytes kopieren
Pfeil 20.8.5 »memset()« – Speicherbereich mit bestimmten Zeichen auffüllen


Rheinwerk Computing - Zum Seitenanfang

20.8 <string.h> – die »mem…«-Funktionen zur Speichermanipulation Zur nächsten ÜberschriftZur vorigen Überschrift

Die meisten Stringfunktionen wurden bereits an früherer Stelle behandelt. Aber einige Funktionen habe ich Ihnen bislang noch vorenthalten. Mit den mem...-Funktionen in der Headerdatei <string.h> können Sie ganze Speicherblöcke kopieren, vergleichen, initialisieren und durchsuchen.


Rheinwerk Computing - Zum Seitenanfang

20.8.1 »memchr()« – Suche nach einzelnen Zeichen Zur nächsten ÜberschriftZur vorigen Überschrift

Die Syntax lautet:

void *memchr(const void *buffer, int c, size_t n);

Diese Funktion sucht in den ersten n Bytes in buffer nach dem Zeichen c. Sollten Sie den ganzen String durchsuchen wollen, können Sie die Funktion strchr() verwenden. Tritt dabei ein Fehler auf oder wird das Zeichen nicht gefunden, gibt diese NULL zurück. Ein Beispiel:

/* memchr.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   char str[] = "Have a lot of fun";
   char *p;
   char ch = 'l';

   p = (char *) memchr(str, ch, 10);
   if(NULL == p)
      printf("%c kommt nicht in den ersten 10 Bytes vor\n", ch);
   else
      printf("%c gefunden an Pos. %d\n", ch, p-str);
   return EXIT_SUCCESS;
}

Rheinwerk Computing - Zum Seitenanfang

20.8.2 »memcmp()« – bestimmte Anzahl von Bytes vergleichen Zur nächsten ÜberschriftZur vorigen Überschrift

Die Syntax lautet:

int memcmp( const void *s1, const void *s2, size_t n);

Mit memcmp() werden die ersten n Bytes im Puffer s1 mit dem Puffer s2 lexikografisch verglichen. Der Rückgabewert ist derselbe wie schon bei strcmp(). Ist s1 größer als s2, ist der Rückgabewert kleiner als 0. Ist s2 größer als s1, ist die Rückgabe größer als 0, und bei Gleichheit beider Speicherbereiche wird 0 zurückgegeben.

/* memcmp.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   char str1[] = "Have a lot of fun";
   char str2[] = "Have more than a lot of fun";
   int check, i;

   for(i = 4; i <= 10; i+=6) {
      check = memcmp( str1, str2, i);
      if(check == 0)
         printf("Vergleich %d Bytes: "
                "Beide Strings sind gleich\n", i);
      else
         printf("Die ersten %d Bytes sind "
                "unterschiedlich\n", i);
   }
   return EXIT_SUCCESS;
}

Rheinwerk Computing - Zum Seitenanfang

20.8.3 »memcpy()« – bestimmte Anzahl von Bytes kopieren Zur nächsten ÜberschriftZur vorigen Überschrift

Die Syntax lautet:

void *memcpy(void *dest, const void *src, size_t n);

Mit der Funktion memcpy() können Sie n Bytes aus dem Puffer src in den Puffer dest kopieren. Die Funktion gibt die Anfangsadresse von dest zurück.

/* memcpy.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   char str[] = "Ein Wort, das hier nicht hingehört: Mist!";
   char replace[] = "M***";
   char *ptr;

   ptr = strstr(str, "Mist");
   memcpy(ptr, replace, strlen(replace));
   printf("%s\n",str);
   return EXIT_SUCCESS;
}

Rheinwerk Computing - Zum Seitenanfang

20.8.4 »memmove()« – bestimmte Anzahl von Bytes kopieren Zur nächsten ÜberschriftZur vorigen Überschrift

Die Syntax lautet:

void *memmove(void *dest, const void* src, size_t n);

Die Funktion erfüllt denselben Zweck wie die Funktion memcpy() – mit einem einzigen, aber gravierenden Unterschied: memmove() stellt sicher, dass im Fall einer Überlappung der Speicherbereiche der Überlappungsbereich zuerst gelesen und dann überschrieben wird. Auch die Rückgabewerte sind bei memmove() dieselben wie bei memcpy().

/* memmove.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   char str[21] = "1234567890";

   /* Den kompletten String nehmen und
    * 10 Bytes weiter als Kopie ablegen */
   memmove(str+10, str, sizeof(str)-1);
   printf("%s\n",str);
   return EXIT_SUCCESS;
}

Rheinwerk Computing - Zum Seitenanfang

20.8.5 »memset()« – Speicherbereich mit bestimmten Zeichen auffüllen topZur vorigen Überschrift

Die Syntax lautet:

void *memset(void *dest, int ch, unsigned int n);

Mit dieser Funktion füllen Sie die ersten n Bytes der Adresse dest mit den Zeichen ch auf.

/* memset.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
   char credit_card[21] = "123456-aiex";
   char *ptr = strchr(credit_card, '-');

   *ptr++;
   /* die letzten vier Zeichen der Kreditkartennummer
    * nicht angeben */
   memset(ptr, '*', 4);
   printf("%s\n",credit_card);
   return EXIT_SUCCESS;
}

Hinweis

Der Zugriff auf Speicherblöcke mit den mem...()-Funktionen in der Headerdatei <string.h> erfolgt byteweise und ist somit nicht für Breitzeichen geeignet. Für Breitzeichen sind in der Headerdatei <wchar.h> die Gegenstücke wmemcpy(), wmemmove(), wmemcmp(), wmemchr() und wmemset() definiert. Anders als bei der Größe eines Speicherblocks (immer der dritte Parameter), die als Anzahl von Bytes eingegeben wird, muss hier allerdings die Anzahl der Breitzeichen eingegeben werden.




Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: C/C++






 C/C++


Zum Rheinwerk-Shop: Einstieg in C






 Einstieg in C


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern