Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher Hochschule Fulda – FB AI Sommersemester 2013/14 Peter Klingebiel,

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher Hochschule Fulda – FB AI Sommersemester 2013/14 Peter Klingebiel,"—  Präsentation transkript:

1 Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher Hochschule Fulda – FB AI Sommersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ

2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ2 ctype-Funktionen 1 Klassifizierungsfunktionen für Zeichen #include alle Funktionen liefern Rückgabewert 0, wenn Test ok, 0 sonst die wichtigsten Funktionen –int isalpha(int c) Test, ob c Buchstabe ist –int isdigit(int c) Test, ob c Ziffer ist

3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ3 ctype-Funktionen 2 –int isalnum(int c) Test, ob c Buchstabe oder Ziffer ist –int isupper(int c) Test, ob c Großbuchstabe ist –int islower(int c) Test, ob c Kleinbuchstabe ist –int isprint(int c) Test, ob c druckbares Zeichen (+ Leerzeichen) ist –int tolower(int c) wandelt c von Groß- in Kleinbuchstaben um –int toupper(int c) wandelt c von Klein- in Großbuchstaben um

4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ4 ctype-Funktionen 3 Implementierung isalnum() für ASCII

5 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ5 ctype-Funktionen 4 Implementierung tolower() für ASCII

6 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ6 Stringfunktionen 1 String als eigener Datentyp existiert in C genau genommen nicht! Strings sind Arrays vom Typ char oder Pointer auf char: –char b[LEN]; bietet Platz für LEN-1 Zeichen –char *s; Pointer s gültig erst nach Zuweisung auf char- Array, Konstante oder dyn. Speicherallozierung Strings werden mit ASCII-NUL terminiert

7 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ7 Stringfunktionen 2 C-Standardbibliothek bietet eine große Menge an Stringfunktionen an wichtige Konvertierungsfunktionen #include –int atoi(char *s) wandelt String s in int –long atol(char *s) wandelt String s in long –double atof(char *s) wandelt String s in double

8 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ8 Stringfunktionen 3 Weitere Konvertierungsfunktionen #include –int sscanf(char *s, char *fmt,...) –formatierte Konvertierung aus dem String s –wie scanf() und fscanf() –Beispiel: char *s = " "; int l; double d; sscanf(s, "%ld %lf", &l, &d); –int sprintf(char *s, char *fmt, …) –formatierte Ausgabe auf String s –wie printf() und fprintf()

9 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ9 Stringfunktionen 4 die wichtigsten Grundfunktionen #include –int strlen(char *s) –liefert Länge des String s –char *strcpy(char *s1, char *s2) –kopiert String s2 nach String s1, bis zum s2 terminierenden NUL, liefert Ptr auf s1 –Achtung: Pufferüberlauf! –char *strncpy(char *s1, char *s2, int n) –kopiert String s2 nach String s1, max n Zeichen

10 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ10 Stringfunktionen 5 –char *strcat(char *s1, char *s2) –Hängt Kopie von s2 an s1, liefert Ptr auf s1 –Achtung: Pufferüberlauf! –char *strncat(char *s1, char *s2, int n) –Hängt Kopie von s2 an s1, max. n Zeichen –int strcmp(char *s1, char *s2) –vergleicht zeichenweise s1 und s2 –liefert 0 bei Gleichheit –sonst Differenz *s1-*s2 bei erstem Unterschied

11 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ11 Stringfunktionen 6 –int strncmp(char *s2, char *s2, int n) –Stringvergleich bis max. n Zeichen –sonst wie strcmp() –char *strchr(char *s, int c) –liefert Pointer auf Position des ersten Auftretens von Zeichen c im String s, sonst NULL –char *strrchr(char *s, int c) –liefert Pointer auf Position des letzten Auftretens von Zeichen c im String s, sonst NULL –also wie strchr() vom Stringende her

12 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ12 Stringfunktionen 7 –char *strstr(char *s1, char *s2) –liefert Pointer auf Position des ersten Auftretens von String s2 im String s1, sonst NULL –char *strdup(char *s) –alloziert Speicher für eine Kopie des String s und kopiert diesen dorthin –liefert Pointer auf Kopie oder NULL bei Fehler –Implementierung char *ns; if(ns = malloc(strlen(s) + 1)) return(strcpy(ns, s));

13 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ13 Stringfunktionen 8 Implementierung von strlen()

14 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ14 Stringfunktionen 9 Implementierung von strcmp()

15 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ15 Stringfunktionen 10 Memory- / Binärfunktionen –void *memset(void *m, int c, size_t n) –kopiert n mal das Zeichen c in den Speicherbereich m –void *memcpy(void *m1, void *m2, size_t n) –kopiert n Bytes von Speicherbereich m2 nach m1 –void *memmove(void *m1, void *m2, size_t n) –kopiert n Bytes von Speicherbereich m2 nach m1 –Überlappungen der Bereiche werden korrekt behandelt –void *memcmp(void *m1, void *m2, size_t n) –Vergleich von n Bytes der Speicherbereiche m1 und m2 –void *memchr(void *m, int c, size_t n) –liefert Pointer auf erstes Auftreten von c in m, sonst NULL –Achtung! Es finden keine Bereichsprüfungen statt! Overflow!

16 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ16 Dynamischer Speicher 1 Funktionen zur Anforderung und Freigabe von dynamischem Speicher (Heap) #include Anforderung von Speicher: –void *malloc(size_t s) –s Bytes allozieren –return NULL bei Fehler, sonst Pointer auf Speicherbereich –void *calloc(size_t n, size_t s) –s * n Bytes allozieren und mit 0 initialisieren –return NULL bei Fehler, sonst Pointer auf Speicherbereich

17 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ17 Dynamischer Speicher 2 Freigabe von alloziertem Speicher –void free(void *ptr) –Speicher von ptr wieder freigeben Beispiel: char buf[BUFLEN], *sptr; size_t slen; if(fgets(buf, sizeof(buf) - 1, stdin)) { slen = strlen(buf); sptr = (char *) malloc(slen + 1); if(sptr == NULL) /* Fehler... */ (void) strcpy(sptr, buf); }

18 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ18 Dynamischer Speicher 3 Implementierung von strdup()


Herunterladen ppt "Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher Hochschule Fulda – FB AI Sommersemester 2013/14 Peter Klingebiel,"

Ähnliche Präsentationen


Google-Anzeigen