21.11.2013 Aufrufe

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

Eine Einführung in die Programmiersprache C und die Grundlagen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />

12.3 Weitere Str<strong>in</strong>gfunktionen<br />

Str<strong>in</strong>gs können nicht direkt mite<strong>in</strong>ander verglichen werden, mit e<strong>in</strong>em direkten == wie hier<br />

char Text1[] = "Hans";<br />

char Text2[] = "Fritz";<br />

if (Text1 == Text2) {} /* Vergleicht Adressen, nicht Inhalte !! */<br />

werden nur <strong>die</strong> Speicheradressen der Str<strong>in</strong>gs, nicht aber deren Inhalt verglichen. Um Str<strong>in</strong>gs zu vergleichen<br />

muss z.B. <strong>die</strong> Funktion strcmp() verwendet werden, oder der Str<strong>in</strong>g von Hand Zeichen<br />

für Zeichen verglichen werden. Wenn der Vergleich auf Grösser oder Kle<strong>in</strong>er lexikalisch korrekt<br />

se<strong>in</strong> soll (mit Umlauten) kann strcmp nicht verwendet werden. strcmp vergleicht nur nach<br />

ASCII-Code. strcmp() liefert 0 zurück, wenn beide Str<strong>in</strong>gs gleich s<strong>in</strong>d, e<strong>in</strong>en Wert kle<strong>in</strong>er 0<br />

wenn der erste kle<strong>in</strong>er ist <strong>und</strong> sonst e<strong>in</strong>en Wert grösser 0.<br />

Um <strong>die</strong> Str<strong>in</strong>gfunktionen verwenden zu können muss <strong>die</strong> Datei str<strong>in</strong>g.h e<strong>in</strong>geb<strong>und</strong>en werden<br />

(#<strong>in</strong>clude ), sie enthält unter anderem folgende Str<strong>in</strong>gfunktionen:<br />

char s1[20] = "Hans";<br />

char s2[20] = "Fritz";<br />

strlen(s1) liefert <strong>die</strong> Länge e<strong>in</strong>es Str<strong>in</strong>gs zurück (Ohne der abschliessenden 0).<br />

Achtung, bestimmt nicht den effektiv vorhandenen Platz, sondern nur<br />

<strong>die</strong> Länge des Textes, also hier 4 (Den belegten Platz).<br />

strcpy(s1, s2) kopiert den Str<strong>in</strong>g s2 nach s1 (Inklusive der abschliessenden 0).<br />

strcat(s1, s2) hängt den Str<strong>in</strong>g s2 an Str<strong>in</strong>g s1 an.<br />

strcmp(s1, s2) vergleicht zwei Str<strong>in</strong>gs mite<strong>in</strong>ander<br />

(Achtung: '0' < '9' < 'A' < 'Z' < 'a' < 'z').<br />

Bei den kopierenden Funktionen (strcpy, strcat) f<strong>in</strong>det ke<strong>in</strong>e Prüfung auf ausreichend Platz<br />

im Ziel statt, es wird e<strong>in</strong>fach geschrieben. Der Programmierer muss selbst für ausreichend Platz (=<br />

Genügend grosses Array) im Ziel sorgen, sonst ist das Verhalten des Programms unvorhersehbar<br />

(Es kann funktionieren, gelegentliche Fehlfunktionen aufweisen, h<strong>in</strong> <strong>und</strong> wieder Abstürzen oder<br />

auch immer Abstürzen)<br />

char Text1[100] = "Welt";<br />

char Text2[100];<br />

strcpy(Text2, Text1); /* Kopiert Text1 nach Text2 */<br />

strcpy(Text1, "Hallo"); /* Kopiert "Hallo" nach Text1 */<br />

strcat(Text1, " "); /* Haengt e<strong>in</strong> Leerzeichen an Text1 an */<br />

strcat(Text1, Text2); /* Haengt Text2 an Text1 an */<br />

/* Vergleicht Text1 mit "Hallo Welt" */<br />

if (strcmp(Text1, "Hallo Welt") == 0) {<br />

pr<strong>in</strong>tf("Alles OK, Laenge von \'%s\' ist %d\n", Text1, strlen(Text1);<br />

} else {<br />

pr<strong>in</strong>tf("Error");<br />

}<br />

Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 49/147

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!