www.wikidata.de-de.nina.az
Eine Zeichenkette Zeichenfolge Zeichenreihe oder ein String aus dem Englischen ist in der Informatik eine endliche Folge von Zeichen z B Buchstaben Ziffern Sonderzeichen und Steuerzeichen aus einem definierten Zeichensatz Zeichen konnen sich in einer Zeichenkette wiederholen die Reihenfolge der Zeichen ist definiert Eine Zeichenkette kann auch leer sein also kein Zeichen enthalten und die Lange 0 haben Zeichenketten sind somit Sequenzen aus Symbolen mit endlicher Lange In der Programmierung ist eine Zeichenkette ein Datentyp der eine Kette von Zeichen mit fester oder variabler Lange enthalt Damit werden hauptsachlich Worter Satze und ganze Texte gespeichert Fast jede Programmiersprache besitzt einen derartigen Datentyp und manche Programmiersprachen arbeiten ausschliesslich mit diesem Datentyp Beispiele dafur sind sed awk und bash Im Quelltext eines Computerprogramms stellen Zeichenketten Text dar der nicht als Programmierbefehl aufgefasst wird sondern Information enthalt So konnen zum Beispiel Fehlermeldungen oder andere Ausgaben an den Benutzer als Zeichenkette im Quelltext festgehalten werden oder Benutzereingaben als Zeichenketten in Variablen abgespeichert werden Die Grundlagen von Programmiersprachen werden in der Theoretischen Informatik untersucht Dort wird der gegebene Zeichensatz als Alphabet bezeichnet und die Zeichenketten werden Worter genannt Die Theorie solcher Worter sind ein Thema der formalen Sprachen Im Zusammenhang mit Programmiersprachen stellen sich dagegen Fragen der Darstellung der Speicherung und des Umgangs mit Zeichenketten Inhaltsverzeichnis 1 Reprasentation 1 1 Syntax fur Literale 1 2 Intern 1 2 1 Reprasentation mit Abschlusszeichen 1 2 2 Reprasentation mit separater Langenangabe 1 2 3 Speicherung im Pool 1 3 Multibyte Zeichen 2 Basisoperationen mit Zeichenketten 2 1 PL SQL 2 2 BASIC 2 3 C 2 4 Java 2 5 Pascal 2 6 PHP 2 7 Rexx 3 Weitere Operationen 3 1 Substrings ermitteln 3 1 1 Python 3 1 2 Rexx 3 1 3 PHP 3 1 4 BlitzBasic 3 1 5 Object Pascal 4 Algorithmen 5 Pufferuberlauf Zeichenketten und Computersicherheit 6 Siehe auch 7 EinzelnachweiseReprasentation BearbeitenZeichenketten konnen auf verschiedenen Ebenen reprasentiert werden Eine davon ist der Quelltext eines Programms der vom Ubersetzer gelesen und interpretiert wird Eine andere ist wie eine Zeichenkette zur Laufzeit eines Programms im Speicher abgelegt wird Syntax fur Literale Bearbeiten In nahezu allen Programmier und Auszeichnungssprachen die Zeichenketten Literale unterstutzen wird eine literale Zeichenkette durch das einfache Aneinanderfugen von Zeichen zwischen einfachen oder doppelten Anfuhrungsstriche reprasentiert Wikipedia Wikipedia 123 in den allermeisten Sprachen verschieden von der Zahl 123 eine leere Zeichenkette Leerstring Das Ende der Zeichenkette wird durch das erste schliessende Anfuhrungszeichen markiert nicht etwa das letzte in der Zeile Daher ergibt sich die Frage wie ein Anfuhrungszeichen Teil der Zeichenfolge sein kann wenn das gewollt ist Bietet eine Sprache zwei oder mehr Begrenzungszeichen an kann auf andere Begrenzungszeichen ausgewichen werden Das ist s Er sagte nie und nimmer und ging Falls alle Begrenzungszeichen vorkommen kann in der Regel ein Begrenzungszeichen in der Zeichenfolge durch eine Escape Sequenz oder durch Dopplung als Teil der Zeichenfolge angegeben werden Escape Sequenz um das Anfuhrungszeichen als Teil der Zeichenkette aufzunehmen vorwiegend in C artigen und vielen anderen modernen Sprachen Dopplung um ein aufzunehmen Verdoppelung des Begrenzers z B in Excel Pascal BASIC Dialekten CSV oder Rexx Die beiden Ansatze sind inkompatibel In Sprachen die Verdopplung des Begrenzungszeichens verwenden werden Escape Sequenzen nicht als solche erkannt und beenden die Zeichenfolge was meist zu Syntaxfehlern fuhrt In Sprachen die Escape Sequenzen verwenden beendet ein verdoppeltes Begrenzungszeichen die Zeichenfolge und beginnt eine neue Fur bestimmte Sprachen ist es moglich dass die Unterschiede nur zu verschiedenen Ergebnissen aber nicht zu Syntaxfehlern fuhren Beispielsweise wird von C fur die Darstellung von verwendet In BASIC bedeutet diese Eingabe die Zeichenfolge gefolgt von einem Kommentar Umgekehrt werden in C nebeneinander stehende Zeichenfolgen Literale automatisch zusammengefasst was es so aussehen lasst als wurde ein doppeltes Anfuhrungszeichen in einer Zeichenfolge verschwinden in Wahrheit wird die Zeichenfolge beendet eine neue begonnen und die beiden verbunden In Algol 60 werden Zeichenketten durch unterschiedliche Symbole begonnen und beendet dadurch konnen Zeichenketten auch geschachtelt sein Beispiele ʿEr sagte ʿSo ist s recht ʾʾ Bei beschranktem Zeichenvorrat werden die Stringklammern durch Trigraphen dargestellt String Literale mussen in vielen alteren Sprachen in einer einzigen Zeile notiert werden wobei fur Zeilenumbruche Escape Sequenzen oder andere Losungen zur Verfugung stehen Moderne Programmiersprachen bieten in der Regel Moglichkeiten an mehrzeilige Zeichenketten als solche in den Code einzugeben Intern Bearbeiten Es gibt mehrere Verfahren um Zeichenketten effizient abzuspeichern Zum Beispiel kann ein Zeichen aus dem verwendeten Zeichensatz als Abschlusszeichen definiert werden Eine Zeichenkette hort dann vor dem ersten Vorkommen dieses Zeichens auf Eine andere Moglichkeit ist die Lange der Zeichenkette separat zu speichern Reprasentation mit Abschlusszeichen Bearbeiten In Programmiersprachen wie C werden die Zeichenketten fortlaufend im Speicher abgelegt und mit dem Nullzeichen NUL in ASCII abgeschlossen Das Nullzeichen ist das Zeichen dessen binare Reprasentation den Zahlenwert 0 hat Die Ziffer 0 als Zeichen hat eine binare Reprasentation ungleich 0 Das folgende Beispiel zeigt wie eine Zeichenkette mit 5 Zeichen in einem Puffer von 10 Byte Lange abgelegt werden konnte Zeichen F R A N K NUL k 0 f wZahlenwerte 46 52 41 4E 4B 00 6B 30 66 77Die Lange der obigen Zeichenkette ist 5 sie belegt aber 10 Bytes im Speicher Zeichen nach dem NUL Zeichen zahlen nicht mehr zur Zeichenkette sie konnen zu einer neuen Zeichenkette gehoren oder wie in diesem Beispiel einfach ungenutzt sein Eine Zeichenkette in C ist ein Array vom Typ char wobei die Zeichenkette als Ende Kennung ein Nullzeichen enthalt Deswegen heissen solche Zeichenketten auch nullterminiert ein alterer Begriff ist ASCIIZ String oder C String Da das Nullzeichen selbst auch noch Speicherplatz benotigt den die Zeichenkette belegt ist der Speicherbedarf einer Zeichenkette immer mindestens 1 Zeichen grosser als die nutzbare Lange der Zeichenkette Als Lange der Zeichenkette wird die Anzahl der Zeichen vor der Endekennung bezeichnet Sie wird von der C Funktion strlen ermittelt Der Vorteil dieser Methode ist dass die Lange eines Strings nur durch den verfugbaren Speicher begrenzt ist und nicht zusatzlich von der Kapazitat des Langenfeldes ein Nachteil ist dass er keine Null Zeichen enthalten kann und dass der Umgang vergleichsweise schwierig und ineffizient ist beispielsweise kann die Lange eines solchen Strings nur durch das Abzahlen der Zeichen ermittelt werden Reprasentation mit separater Langenangabe Bearbeiten Ebenfalls kann die Lange separat vor dem Inhalt der Zeichenfolge gespeichert werden Auf diese Art wird kein Zeichen als Begrenzungszeichen verbraucht das dann nicht mehr Teil einer Zeichenfolge sein kann Interpretation Lange F R A N K k 0 f wZahlenwerte 00 00 00 05 46 52 41 4E 4B 6B 30 66 77Zeichenketten die so gespeichert werden konnen eine bestimmte Lange nicht uberschreiten Die meisten modernen Programmiersprachen die eine Langenangabe verwenden stellen fur die Lange mindestens 32 Bit bereit oft ist das Langenfeld genauso gross wie ein Zeiger Je nach Details konnen auf 32 Bit Systemen Zeichenfolgen zwischen 2 und 4 GiB gross sein und auf 64 Bit Systemen so erheblich mehr dass die theoretische Begrenzung nie ausgereizt wird Speicherung im Pool Bearbeiten Die Speicherung von Zeichenketten benotigt viel Speicherplatz und ist eine sehr haufige Aufgabe Deshalb verwenden viele hohere Programmiersprachen eine besondere Verwaltung um das moglichst effizient gestalten zu konnen Dies ist aber dem Zugriff der Programmierer einer Anwendung entzogen es gibt in aller Regel keine Moglichkeit auf diese Verwaltung direkt zuzugreifen oder auch nur festzustellen ob eine solche aktiv ist Es werden alle Zeichenketten in einem zentralen Pool abgelegt Das Ziel ist dass jede benotigte Zeichenkette nur genau ein einziges Mal gespeichert wird Die Variable im Anwendungsprogramm erfahrt nur eine Kennnummer um bei Bedarf auf die Zeichenkette zugreifen zu konnen Die Verwaltung bedient sich fur die Organisation schneller und effizienter Methoden meist einer Hashtabelle Jedes Mal wenn eine Zeichenkette gespeichert werden soll wird nachgesehen ob eine inhaltsgleiche bereits bekannt ist Ist das der Fall wird die Kennnummer der bereits existierenden Zeichenkette zuruckgegeben ansonsten muss sie neu angelegt werden Jedes Mal wenn eine Zeichenkette gespeichert wird wird ihr Referenzzahler um eins erhoht Wird eine Zeichenkette an einer Stelle des Programms nicht mehr benotigt weil ein Unterprogramm beendet ist und die darin enthaltenen Literale sinnlos werden oder weil eine Variable einen anderen Wert erhalt wird dies der Verwaltung gemeldet und der Referenzzahler um eins vermindert Damit lasst sich feststellen welche der gespeicherten Zeichenketten im Moment verwendet werden hat der Referenzzahler den Wert Null wird sie zurzeit nicht gebraucht Dadurch ware es moglich bei Engpassen an Speicherplatz die Verwaltung zu reorganisieren und unbenotigte Zeichenketten zu loschen Garbage Collection Dies wird allerdings moglichst vermieden weil es dazu kommen kann dass bei jedem Aufruf eines Unterprogramms immer wieder gleichlautende Zeichenketten erneut zugewiesen werden fortgeschrittene Verwaltung registriert auch die Haufigkeit des Abspeicherns und loscht nur besonders selten benutzte und lange Zeichenketten Handelt es sich um eine Programmiersprache in der ein Quelltext kompiliert und das Ergebnis in einer Objektdatei abgelegt wird dann erhalten in ihrer Datensektion nach Auflosung aller Praprozessor Operationen die resultierenden statischen Zeichenketten meist eine ahnliche tabellarische Verwaltung Allerdings gibt es hier weder ein Loschen noch Referenzzahler Diese Literale stehen auch der zentralen Zeichenkettenverwaltung nicht zur Verfugung da bei dynamischer Einbindung nicht gesichert ist dass diese Datensektion immer geladen ist Multibyte Zeichen Bearbeiten Traditionell wurden zur Reprasentation eines einzelnen Zeichens 8 Bit verwendet was bis zu 256 verschiedene Zeichen ermoglicht Um gleichzeitig Zeichen vieler Fremdsprachen und vor allem auch nichtlateinischer Schriften wie etwa Griechisch verarbeiten zu konnen reicht das nicht aus Mittlerweile stellen viele Programmiersprachen die Moglichkeit zur Speicherung eines einzelnen Zeichens in 2 Byte oder 4 Byte zur Verfugung konsequenterweise vermeidet man heute in diesem Zusammenhang das Wort Byte und spricht allgemein von Zeichen Unter Microsoft Windows sind alle Systemfunktionen die Zeichenketten verwenden in einer Version mit nachgestelltem A fur ANSI meint 1 Byte nach ISO 8859 verfugbar sowie mit nachgestelltem W fur wide Multibyte Einfacher ist es aber dies gar nicht explizit anzugeben Kompiliert man ein Programm mit der entsprechenden Option so werden automatisch alle neutralen Funktionsaufrufe auf 1 Byte Zeichen oder auf Multibyte umgestellt Genauso gibt es fur die Programmiersprachen C und C Praprozessor Makros mit deren Hilfe samtliche Standardfunktionen und Literale in einer unbestimmten Version im Quelltext notiert werden konnen bei der Kompilierung wird dann die gerade angemessene Funktion eingesetzt Per Definition verarbeiten die historischen Standardfunktionen in C immer genau 1 Byte Zeichen Inzwischen kodieren viele Programmiersprachen Zeichenfolgen in UTF 16 verwenden also grundsatzlich mehrere Bytes fur ein Zeichen meist 2 fur seltene Zeichen jedoch 4 Byte Um in Dateien und bei der Datenfernubertragung Platz und Ubertragungszeit zu sparen werden Zeichenfolgen in UTF 8 gespeichert bzw ubertragen Beim Lesen Schreiben bzw Senden Empfangen findet also in aller Regel eine Umkodierung statt Eine proprietare Zwischenform war in den 1990er Jahren auf Systemen von Microsoft unter dem Namen Multibyte Character Set gebrauchlich Hier wurden verschiedene Formate und Kodierungen Dekodierungen eingesetzt um der Problematik abzuhelfen mit 1 Byte Zeichen auch asiatische Schriften abdecken zu mussen Basisoperationen mit Zeichenketten BearbeitenDie Basisoperationen mit Zeichenketten die in fast allen Programmiersprachen vorkommen sind Lange Kopieren Vergleichen Verketten Bilden von Teilketten Mustererkennung Suchen von Teilketten oder einzelnen Zeichen Zum Kopieren von Zeichenketten wird in vielen hoheren Programmiersprachen der Zuweisungsoperator meist oder benutzt In C wird das Kopieren mit der Standardfunktion strcpy oder memcpy durchgefuhrt Wie zeitaufwendig das Kopieren ist hangt stark von der Reprasentation der Zeichenketten ab Bei einem Verfahren mit Referenzzahlern besteht das Kopieren nur aus dem Erhohen des Referenzzahlers In anderen Verfahren muss eventuell die Zeichenkette alloziert und komplett kopiert werden Das Vergleichen von Zeichenketten auf gleich und ungleich wird von vielen hoheren Programmiersprachen mit den Operatoren oder lt gt bzw unterstutzt In einigen Sprachen wie Pascal lasst sich zudem ein lexikographischer Vergleich mit lt und gt durchfuhren Sind diese Operatoren nicht vorhanden werden Funktionen genutzt Bei der Standardfunktion strcmp in C gibt es drei Ergebnisse gleich grosser oder kleiner Dabei hat das erste Zeichen die hochste Wertigkeit 1 2 Es gibt aber auch kompliziertere Vergleichsfunktionen die Gross Kleinbuchstaben Einordnung von Umlauten usw berucksichtigen Beim Suchen in Worter und Telefonbuchern spielt dies eine Rolle Zum Verketten gibt es in vielen Programmiersprachen Operatoren wie BASIC Pascal Python Java C amp Ada BASIC Perl PHP Lua oder REXX In C gibt es dafur die Funktion strcat Um an eine bereits bestehende Zeichenkette eine andere anzufugen stellen einige Sprachen einen eigenen Operator zur Verfugung in Java und Python in Perl und PHP Dabei wird ublicherweise der Operand nicht einfach hinten angefugt sondern der Ausdruck alt neu ausgewertet und der Variablen alt zugewiesen da Strings in der Regel als unveranderlich betrachtet werden es handelt sich also nur um eine abkurzende Schreibweise Es gibt jedoch in vielen modernen Programmiersprachen wie Java C Sharp oder Visual Basic NET sogenannte String Builder Klassen die veranderbare Strings darstellen Allerdings lassen sich String und String Builder in der Regel nicht gegenseitig austauschen sondern mussen ineinander umgewandelt werden Direkt mit oder ohne Whitespace hintereinander notierte Strings werden in manchen Sprachen implizit verkettet C C Python REXX Um eine Teilkette zu erhalten gibt es verschiedene Moglichkeiten Durch die Angabe von Zeichenkette Startindex Endindex bzw Zeichenkette Startindex Lange kann eine Teilkette eindeutig definiert werden Diese Operation heisst haufig substr Einige Programmiersprachen zum Beispiel Python bieten syntaktischen Zucker fur diese Operation an siehe Beispiele PL SQL Bearbeiten In Oracle sind in gespeicherten Prozeduren Funktionen und PL SQL Blocken folgende Basisoperationen moglich DECLARE Text1 varchar2 30 Text2 varchar2 30 Text3 varchar2 61 BEGIN Text1 Frank Text2 Meier Text3 Text1 Text2 END BASIC Bearbeiten text FRANK text2 text Das nachgestellte Dollarzeichen gibt an dass es sich um eine Zeichenkettenvariable handelt Da ein String durch Anfuhrungszeichen begrenzt wird konnen sie selbst nur uber die Chr 34 bzw CHR 34 Funktion in den String eingebaut werden die 34 ist der ASCII Code des Anfuhrungszeichens Mehrere Zeichenketten konnen je nach BASIC Dialekt mit dem Pluszeichen oder mit dem Kaufmanns Und amp zu einer verbunden konkateniert werden text2 text text2 amp text amp C Bearbeiten Dieses C Programm definiert zwei Zeichenketten Variablen die jeweils 5 Zeichen Nutzlast aufnehmen konnen Da Zeichenketten mit einem Nullzeichen abgeschlossen werden muss das Array 6 Zeichen haben Anschliessend wird in beide Variablen der Text FRANK kopiert include lt string h gt int main void char text1 6 char text2 6 strcpy text1 FRANK strcpy text2 text1 return 0 Um zwei Strings aneinanderzuhangen existiert die Standardfunktion strcat Diese allozziert jedoch nicht den fur den Zielstring notwendigen Speicherplatz Dies muss vorher separat erfolgen include lt string h gt int main void char puffer 128 Zielpuffer der gross genug ist strcpy puffer FRANK strcat puffer ENSTEIN return 0 Java Bearbeiten String text1 FRANK String text2 text1 Zeichenketten in Java sind Objekte der Klasse String Sie sind nach dem Erzeugen nicht mehr anderbar Im obigen Beispiel reprasentieren text1 und text2 dasselbe Objekt Die Konkatenation von Zeichenketten wird durch den fur diesen Fall uberladenen Plus Operator durchgefuhrt String text1 FRANK String text2 ENSTEIN String ganzerName text1 text2 Pascal Bearbeiten Streng genommen funktioniert das folgende erst seit Turbo Pascal da die ursprungliche von Niklaus Wirth geschaffene Pascal Sprache nur packed arrays of char kannte die etwas umstandlicher zu handhaben waren var vorname nachname name string vorname FRANK nachname MEIER name vorname nachname PHP Bearbeiten Bei PHP verhalt es sich ahnlich wie bei Perl text FRANK text2 text text2 ergibt FRANK text3 lt lt lt HEREDOC Ich bin ein langerer Text mit Anfuhrungszeichen wie oder HEREDOC Texte werden mit einem Punkt konkateniert text FRANK text FRANK ENSTEIN text ergibt FRANKENSTEIN text FRANK text ENSTEIN text ergibt FRANKENSTEIN Rexx Bearbeiten In Rexx wird alles einschliesslich Zahlen als String reprasentiert So wird einer Variablen ein String Wert zugewiesen a Ottos Mops Die folgenden Ausdrucke ergeben jeweils den Wert Ottos Mops Ottos Mops implizit verkettet genau ein Leerzeichen wird automatisch eingefugt Ottos Mops explizit verkettet kein Einfugen eines Leerzeichens Ottos Mops implizit verkettet durch unmittelbares Anfugen eines weiteren Strings der durch das andere Begrenzungszeichen begrenzt wird Weitere Operationen BearbeitenSubstrings ermitteln Bearbeiten Angenommen die Variable s enthalte die Zeichenkette Ottos Mops hopst fort Dann lassen sich das erste Zeichen O die ersten funf Zeichen Ottos das siebte bis zehnte Mops sowie die letzten vier fort wie folgt ermitteln Python Bearbeiten s 0 O s 5 oder s 0 5 oder s split 0 Ottos s 6 10 oder s split 1 Mops s 4 oder s split 1 fortDieses Verfahren wird Slicing genannt von engl to slice mit der Bedeutung in Scheiben schneiden bzw aufteilen Das erste Zeichen hat den Index 0 Rexx Bearbeiten SubStr s 1 1 oder Left s 1 O Left s 4 oder Word s 1 Ottos SubStr s 7 4 oder Word s 2 Mops Right s 4 oder Word s 4 fortRexx kann Strings auch wortweise verarbeiten wobei Worter durch beliebig viele Leerzeichen getrennt werden Das erste Zeichen hat wie bei Pascal Strings den Index 1 PARSE VAR s A 2 1 O M F Variablen A O M F beinhalten O Ottos Mops fort Dieses Verfahren wird Tokenizing genannt von engl token mit der Bedeutung Kurzel oder Spielstein und meint hier etwa Stuck oder Brockchen und ist auch in anderen Sprachen eine Standardfunktion PHP Bearbeiten substr s 0 5 Ottos substr s 6 4 Mops substr s 4 fort weitere Beispiele siehe 3 BlitzBasic Bearbeiten Left s 5 Ottos Mid s 7 4 Mops Right s 4 fortObject Pascal Bearbeiten s 1 O Copy s 1 5 Ottos Copy s 7 4 MopsMittels der Unit StrUtils LeftStr s 5 Ottos MidStr s 7 4 Mops RightStr s 4 fortAlgorithmen BearbeitenVerschiedene Algorithmen arbeiten vorwiegend mit Zeichenketten String Matching Algorithmen uberprufen ob eine Zeichenkette Teil einer grosseren Zeichenkette ist Bestimmen von Teilzeichenketten die mit einem regularen Ausdruck beschrieben sind Sortieralgorithmen im Kontext von Strings hauptsachlich zum Sortieren der Suffixe eines Textes Suffixbaum Suffixarray Parser Codeumwandlungen Unicode usw Heute schreibt ein Programmierer diese Art Algorithmen meist nicht mehr selbst sondern benutzt Konstrukte einer Sprache oder Bibliotheksfunktionen Pufferuberlauf Zeichenketten und Computersicherheit BearbeitenImmer dann wenn Zeichenketten aus der Aussenwelt in die innere Reprasentation ubernommen werden sollten besondere Vorkehrungen getroffen werden Neben unerwunschten Steuerzeichen und der Formatierung ist vor allem die maximale Lange der Zeichenkette zu uberprufen Beispiel Eine internationale Telefonnummer soll aus einer Datei eingelesen werden Sie soll ausschliesslich Ziffern enthalten und durch ein Tabulatorzeichen ASCII 9 von der Anschrift abgetrennt werden Fur die Aufnahme ist eine Zeichenkette fester Lange mit 16 Zeichen vorgesehen dies reicht fur alle gultigen Telefonnummern aus In den Eingabedaten konnten Leerzeichen oder Bindestriche enthalten sein und die Telefonnummer verlangern Auch wenn versehentlich statt TAB ein genauso aussehendes Leerzeichen folgt ergeben sich mehr als 16 Zeichen Wird dies nicht durch geeignete Prufungen kontrolliert und darauf angemessen reagiert kommt es zum Pufferuberlauf und moglicherweise zum Absturz des Programms oder zu mysteriosen Folgefehlern Zu den haufigsten Angriffsmethoden auf Webserver zahlen Pufferuberlaufe Dabei wird versucht einer Zeichenkettenvariablen einen Inhalt zuzuweisen dessen Lange die vom Compiler im Speicher reservierte Lange der Variablen ubersteigt Hierdurch werden andere benachbarte Variablen im Speicher uberschrieben Bei geschickter Ausnutzung dieses Effekts kann ein auf einem Server laufendes Programm manipuliert und fur Angriffe auf den Server missbraucht werden Es reicht aber schon die Server Software so zum Absturz zu bringen da sie die Netzverbindung bewachen soll Gateway reisst ihr Ausfall eine Lucke die einen schwach gesicherten Server nun schutzlos jeder Manipulation uberlasst Soweit nicht in uberschaubarer Umgebung bereits die Gultigkeit uberwacht wurde sollten Zeichenketten Operationen nur mit Funktionen durchgefuhrt werden bei denen die maximale Lange der Zeichenkette uberpruft wird In C waren das Funktionen wie z B strncpy snprintf anstelle von strcpy sprintf Siehe auch BearbeitenZeichenkodierung BitketteEinzelnachweise Bearbeiten Jedem einzelnen Zeichen kommt in jedem Computersystem ein Zahlenwert meist Binarwert zu entsprechend dem es mit einem anderen Zeichen auf gleich grosser oder kleiner verglichen werden kann Fur die Feststellung von Duplikaten in einer Menge von Strings kommt es zwar nur auf die Gleichheit an bietet die Vergleichsfunktion aber auch die Ergebnisse grosser und kleiner nach den Regeln einer Totalordnung an kann Duplikaterkennung mit binarem Suchen wesentlich effizienter geschehen Wegen der absteigenden Wertigkeit der Zeichen mit wachsender Adresse vergleichen die Vergleichsoperatoren der verschiedenen Programmiersprachen aber auch die C Funktionen strcmp strncmp memcmp auf jeder Maschine im Stil Big Endian php net Strings laut dem offiziellen PHP Handbuch Abgerufen von https de wikipedia org w index php title Zeichenkette amp oldid 237485432