Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher

Slides:



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

Strukturen in C Spelz, Sievers, Bethke.
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
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
der Universität Oldenburg
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
Hochschule Fulda – FB ET Sommersemester 2010
Arrays,Strings&Pointer in C/C++
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
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 Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
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 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 Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
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
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
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
Datentypen Überblick Datentypen Einfache / fundamentale Datentypen
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
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
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
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
Einführung in die Programmiersprache C 5.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
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 Annäherung an C
Programmieren in C Dateien
Power Point Präsentationsvorlagen
Programmieren in C Dynamische Listen / Bäume
Dynamischer Speicher malloc wird in c++ eher nicht mehr verwendet.
Programmieren in C / C++ Erste Schritte mit C++ Klassen und Objekte
Programmieren in C Grundlagen C 2
Programmieren in C Grundlagen C 1
AlgoDat Fragen zu Vorlesung und Klausur
Hochschule Fulda – FB AI Sommersemester 2017
Programmieren in C Wie speichert C
Hochschule Fulda – FB AI Wintersemester 2014/15
Arrays (Eigenschaften)
Programmieren in C Module und Bibliotheken
Hochschule Fulda – FB AI Sommersemester 2018
Variable: typ varName = Wert Kiste: Art Aufschrift  Inhalt
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
 Präsentation transkript:

Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher Hochschule Fulda – FB AI Wintersemester 2014/15 http://c-ai.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