Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Hochschule Fulda – FB ET Sommersemester 2010
Forschungszentrum caesar
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
Java: Dynamische Datentypen
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
ARRAY oder FELD oder VEKTOR
Dynamischer Speicher und Struktur
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Hochschule Fulda – FB ET Sommersemester 2010
Informatik II Grundlagen der Programmierung Programmieren in C Add Ons Hochschule Fulda – FB ET Sommersemester Peter.
Einführung in Visual C++
Arrays,Strings&Pointer in C/C++
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Programmiersprache C 4
Dynamische Datentypen
Programmieren in C Einführung
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Programmieren in C Einführung
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Grundlagen C 5
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Programmieren in C Überblick C "Was ist wichtig?"
Programmieren in C Grundlagen C 3 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Grundlagen C 2
Informatik II Grundlagen der Programmierung Programmieren in C printf() mit variabler Feldbreite Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Einführung
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Ausflug printf() Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Annäherung an C
Programmieren in C Grundlagen C 3
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Dateien
Programmieren in C Grundlagen C 2
Hochschule Fulda – FB AI Sommersemester 2014
Programmieren in C Sortieren, Suchen
Hochschule Fulda – FB AI Sommersemester 2014
Verarbeitung von Char, Strings und Zeichenketten 2.
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
C Tutorium – Memory Management – Knut Stolze. 2 Agenda Einführung in die Speicherverwaltung Stack vs. Heap Malloc Free Sizeof Tipps/Hinweise.
Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
Programmieren in C Dateien
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Programmieren in C Grundlagen C 2
Programmieren in C Grundlagen C 1
Hochschule Fulda – FB AI Sommersemester 2017
Programmieren in C Wie speichert C
Arrays (Eigenschaften)
Programmieren in C Module und Bibliotheken
 Präsentation transkript:

Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher Hochschule Fulda – FB AI Sommersemester 2013/14 http://c.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ

Klassifizierungsfunktionen für Zeichen #include <ctype.h> ctype-Funktionen 1 Klassifizierungsfunktionen für Zeichen #include <ctype.h> 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

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

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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 2 C-Standardbibliothek bietet eine große Menge an Stringfunktionen an wichtige Konvertierungsfunktionen #include <stdlib.h> 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 3 Weitere Konvertierungsfunktionen #include <stdio.h> int sscanf(char *s, char *fmt,...) formatierte Konvertierung aus dem String s wie scanf() und fscanf() Beispiel: char *s = "123 98.76"; 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() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Stringfunktionen 4 die wichtigsten Grundfunktionen #include <string.h> 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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)); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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

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

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) Ü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! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Dynamischer Speicher 1 Funktionen zur Anforderung und Freigabe von dynamischem Speicher (Heap) #include <stdlib.h> 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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