Algorithmen und Datenstrukturen

Ähnliche Dokumente
Arrays (Felder/Vektoren)

Algorithmen und Datenstrukturen

6. Bearbeitung von Strings in C Bearbeitung von Strings in C

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

C/C++-Programmierung

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmieren in C. Die C-Standardbibliothek. Prof. Dr. Nikolaus Wulff

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Dr. Monika Meiler. Inhalt

4 ZEICHEN UND ZEICHENKETTEN

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Der Datentyp String. Stringvariable und -vergleiche

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9

Programmierung mit C Felder; Array

Zusammengehörige Daten struct. Strukturierte Datentypen und Funktionszeiger. Zugriff auf struct-elemente. Variablendeklarationen mit struct

INE1 Mehr zu Funktionen Ausserdem: Strings (Saiten) Call by value, struct's Call by reference Array Parameter Strings und Stringfunktionen

Fakultät Angewandte Informatik Lehrprofessur für Informatik

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Zeichenketten (Strings) in C

C++-Zusammenfassung. H. Schaudt. August 18, 2005

String s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

2. Programmierung in C

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen

Grundlagen der Informatik 11. Zeiger

2. Programmierung in C

Die Programmiersprache C99: Zusammenfassung

Elementare Datentypen in C++

Übung zur Vorlesung Programmieren in C

Strukturierte Datentypen und Funktionszeiger

Zeiger, Arrays und Strings in C und C++

Deklarationen in C. Prof. Dr. Margarita Esponda

6. Zeiger Allgemeines Definition eines Zeigers

Erste Schritte der Programmierung in C

8. Referenzen und Zeiger

Klausur in Programmieren

DAP2 Praktikum Blatt 1

Inhalt. Peter Sobe 63. Felder in C

Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)

Technische Infor matik 2 C/C++-Kurs. Pointer und Arrays AG Rechner netze 2.1

3. Arrays und Pointer

GI Vektoren

Zeichen und Zeichenketten (engl. Strings)

Übungspaket 24 Zeichenketten

2. Programmierung in C

10 Die Programmiersprache C99: Zusammenfassung

C- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa?

Praxis der Programmierung

Die Algorithmenbeschreibungssprache Jana

Pointer überall Pointer von Jörg Jacob, Mai 2004 (Version 0.2)

Array-Verwaltung. Array-Verwaltung im Speicher Illustration. Zuweisung von Arrays. Speicherbereinigung. Aliasierung Eine Besonderheit

Programmierung mit C Zeiger

Welche Informatik-Kenntnisse bringen Sie mit?

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

Klausur in Programmieren

Kapitel 6: Dynamische Speicherverwaltung

C programmieren. Jürgen Wolf

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Im Windows Betriebssystem sind Dateien eindeutig gekennzeichnet durch ihren Pfad, Dateinamen und nach einem Punkt die Dateierweiterung.

Vorkurs C++ Programmierung

Zugriff auf die Modul-EEPROMs

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Unterlagen. CPP-Uebungen-08/

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Einführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian

Dateizugriff unter C

Zusammenfassung des Handzettels für Programmieren in C

Programmieren in C/C++ und MATLAB

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

Übungen zur Vorlesung Computergrundlagen WS 2008/09 Fakultät Physik, Universität Stuttgart Jens Harting, Martin Hecht, Bibhu Biswal Blatt 14

Bearbeiten von Zeichenketten in S7-SCL

Programmier-Befehle - Woche 10

Lösungsvorschlag zur 9. Übung

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Transkript:

Algorithmen und Datenstrukturen 3.2 Auswahl an Stringfunktionen W. Tasin, M.Sc. Fakultät 04 tasin@hm.edu

Allgemeines (1) Die ANSI-Norm definiert auch nützliche Funktionen zur ASCIIZ-Stringbearbeitung. In diesem Kapitel wird nur eine Auswahl an Stringfunktionen der Standardbibliothek dargestellt. Diese sind in der Include-Datei string.h deklariert und in der C-Standardbibliothek definiert. Wie bereits im Kapitel "Arrays" dargestellt, interpretieren diese Funktionen die Komponenten eines char-arrays bis zum abschließenden NUL-Zeichen ('\0'). Der NULL-Pointer darf keiner Funktion als Parameter übergeben werden Speicherfehler. Algorithmen und Datenstrukturen - W. Tasin, M.Sc. 2

Allgemeines (2) Die Funktionen verwenden überwiegend folgende Typen: size_t entspricht dem Typ unsigned int. Wird als Typ für eine Längenangabe oder eine Position im String verwendet. const char * Zeiger auf die Speicherstelle des ersten Zeichens einer konstanten Zeichenkette. Man zeigt damit an, dass innerhalb der Funktion die referierten Speicherinhalte nicht geändert werden. Wird als Typ für die Startadresse auf einen String verwendet, der nur gelesen wird (z. B. zu kopierender String). char * Zeiger auf die Speicherstelle eines char-arrays dessen Komponenten modifizierbar sein soll. Wird als Typ für die Startadresse auf einen String verwendet, der modifiziert wird (z. B. Speicherbereich in den ein String kopiert wird). Algorithmen und Datenstrukturen - W. Tasin, M.Sc. 3

Stringlänge size_t strlen(const char *str); Ermittelt die Stringlänge durch Suchen nach der Speicherstelle (ab der Adresse str), die das NUL-Zeichen beinhaltet. Verwendung der Standardfunktion #include <string.h> /*... */ char *quest = "Wer, wie, was?"; size_t laenge=strlen("hallo"); laenge=strlen(quest); laenge = 5 laenge = 14 Nachbildung einer eigenen strlen-funktion unsigned mystrlen(const char *str) { unsigned len=0; while (str[len]!='\0') len++; return len; } Algorithmen und Datenstrukturen - W. Tasin, M.Sc. 4

Stringkopie char *strcpy(char *dest, const char *src); Kopiert den String ab Adresse src in den Speicher, der durch die Adresse in dest (und folgende) referiert wird. Ab der Adresse dest muss genügend Speicherplatz reserviert worden sein! Liefert als Rückgabewert die Adresse dest. Verwendung der Standardfunktion #include <string.h> /*... */ char mess[80+1]; strcpy(mess, "Oops"); mess[0] = 'O' mess[1] = 'o' mess[2] = 'p' mess[3] = 's' mess[4] = '\0' char *mystrcpy(char *dest, const char *src) { } Nachbildung einer eigenen strcpy-funktion unsigned i, len=mystrlen(src); for (i=0; i<=len; i++) dest[i]=src[i]; return dest; Algorithmen und Datenstrukturen - W. Tasin, M.Sc. 5

Stringkonkatenation char *strcat(char *s1, const char *s2); Hängt an den String, der durch die Adresse s1 referiert wird, den String ab s2 an. Ab der Adresse s1 muss genügend Speicherplatz reserviert worden sein! Liefert als Rückgabewert die Adresse s1. Verwendung der Standardfunktion Nachbildung einer eigenen strcat-funktion #include <string.h> /*... */ char part[80+1]="teil"; strcat(part, "er."); mess[0] = 'T' mess[1] = 'e' mess[2] = 'i' mess[3] = 'l' mess[4] = 'e' mess[5] = 'r' mess[6] = '.' mess[7]='\0' char *mystrcat(char *s1, const char *s2) { } unsigned len=mystrlen(s1); mystrcpy(s1+len, s2); return s1; Algorithmen und Datenstrukturen - W. Tasin, M.Sc. 6

Stringvergleich (1) Um zwei Strings zu vergleichen und eine alphabetische Ordnung zu erzeugen, werden die Zeichen (ASCII-Werte) des gleichen Index miteinander verglichen. Groß-/Kleinschreibung wird beachtet Kleinbuchstaben haben größeren ASCII-Wert Umlaute und ß werden nicht korrekt betrachtet Solange die Zeichen des gleichen Index gleich sind und ein Stringende noch nicht erreicht, springt man zum nächsten Index und vergleicht deren Komponentenwerte. Sind zwei Zeichen gleichen Index jedoch ungleich, so kann man feststellen, welcher String alphabetisch nach dem anderen folgt. Ist man am Ende eines Strings angelangt und sind alle bisher getesteten Komponenten gleich gewesen, dann sind beide Strings gleich. s1 P a s t \0 s1 P a r T \0 s1 P a s t \0 s2 P a r t \0 s2 P a r t \0 s2 P a s t \0 Algorithmen und Datenstrukturen - W. Tasin, M.Sc. 7

Stringvergleich (2) int strcmp(const char *s1, const char *s2); Vergleicht zeichenweise den String ab s1 mit dem String ab s2. Liefert einen positiven Wert wenn der String s1 "größer" als s2 ist, einen negativen Wert falls s1 "kleiner" als s2 ist und den Wert 0 falls die Strings gleich sind. Verwendung der Standardfunktion #include <string.h> /*... */ char part1[80+1]="teil"; int cmp=strcmp(part1, "Teil"); cmp=strcmp(part1, "teil"); cmp=strcmp(part1, "Tei"); cmp = 0 cmp < 0 cmp > 0 int mystrcmp(const char *s1, const char *s2) { } Nachbildung einer eigenen strcmp-funktion int cmp=0, i=0; while ((cmp=s1[i]-s2[i])==0 && s1[i]!='\0') i++; return cmp; Algorithmen und Datenstrukturen - W. Tasin, M.Sc. 8