Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // string-Funktionen
- /*
- Da ein String wie bereits erwähnt keinen eigenen Typ in ANSI C darstellt, wurden in der Bibliothek string.h
- Funktionen bereitgestellt, die a) Zuweisung, b) Vergleich und c) "Aneinander-Hängen" ermöglichen
- */
- #include<stdio.h>
- #include<string.h>
- main()
- {
- system("chcp 1252");
- system("cls");
- // STRING COPY -----------------------------------------------------------------------------------------------
- char satz[100]="Irgendein Beispielssatz ...";
- printf("Inhalt von satz nach ERSTER Initialisierung durch"
- " char satz[100]='Irgendein Beispielssatz ...':\n%s\n\n",satz);
- // Diese Zuweisung per '='-Zeichen klappt nur bei der ERSTEN Initialisierung
- // satz[]="Neuer Inhalt"; // funktionieert nicht.
- // Lösung des Problems: Verwendung der strcpy-Funktion (stringCopy)
- strcpy(satz,"Neuer Inhalt");
- printf("Aktueller Inhalt von satz nach Verwendung von strcpy(satz,\"Neuer Inhalt\"):\n%s\n\n",satz);
- // Einsatz von strcpy funktioniert natürlich auch mit Zugriff aus einer Variable:
- char satz2[]="Ein anderer Satz.";
- strcpy(satz,satz2); // Einsatzgebiet z.B.: satz2 wird per User-Eingabe gefüllt,
- // liegt also beim programmieren noch nicht vor
- printf("Aktueller Inhalt von satz nach Verwendung von strcpy(satz,satz2):\n%s\n\n",satz);
- // Folgendes hingegen kann nicht funktionieren:
- // strcpy("Blablablub, ... ...!",satz); // Ergibt einen Ausnahmefehler, denn der KONSTANTE String "Blabla ..." kann
- // nicht überschrieben werden.
- // String Compare -----------------------------------------------------------------------------------------------
- strcmp("Auto","Bus"); // Gibt einen Zahlenwert (als Rückgabewert) zurück:
- // -1 : Die beiden Strings stehen in alphabetisch korrekter Reihenfolge (kleiner ASCII-Wert minus großem)
- // 0 : Die beiden Strings sind identisch
- // 1 : Die beiden Strings stehen nicht alphabetisch geordnet zueinander (großer ASCII-Wert minus kleinem)
- printf("Rückgabewert von strcmp(\"Auto\",\"Bus\"): %i\n\n",strcmp("Auto","Bus"));
- printf("Rückgabewert von strcmp(\"Auto\",\"Xerxes\"): %i\n\n",strcmp("Auto","Xerxes"));
- printf("Rückgabewert von strcmp(\"Bus\",\"Auto\"): %i\n\n",strcmp("Bus","Auto"));
- printf("Rückgabewert von strcmp(\"Auto\",\"Auto\"): %i\n\n",strcmp("Auto","Auto"));
- // Aufruf natürlich auch mit Variablen möglich
- char wort[20]="Auto"; // Länge dieses Strings=5 (4 Zeichen + 1 Stoppzeichen)
- char wort2[10]="bus"; // Länge dieses Strings=4 (3 Zeichen + 1 Stoppzeichen)
- printf("Rückgabewert von strcmp(wort,wort2): %i\n\n",strcmp(wort,wort2));
- // String Concat (konkatieren = zusammenfügen, aneinanderhängen) ------------------------------------------------
- strcat(wort,wort2); // Der linke String wird um den rechten String verlängert (der rechte bleibt unverändert)
- // ACHTUNG: Es muss im linken Array genug Platz sein, um den Gesamt-String einzutragen
- // Es muss also gelten Länge von wort(20)
- // >= String1(4)[ohne Stoppzeichen]+String2(3)[ohne Stoppzeichen] + 1 Stoppzeichen
- printf("wort=%s wort2=%s\n\n",wort,wort2);
- //strcat(wort,"fahrer"); // Nun wird Autobus noch um fahrer verlängert 13 Zeichen + 1 Stoppzeich < 20=Länge von wort
- printf("Array wort (Autobus) konkatiert mit "
- "fahrer ergibt (Ausgabe über Rückgabewert von strcat): %s\n\n",strcat(wort,"fahrer"));
- printf("Array wort (Autobus) konkatiert mit fahrer ergibt (Ausgabe über Startadresse von wort): %s\n\n",wort);
- // String Length ------------------------------------------------------------------------------------------------
- strlen(wort); // Rückgabewert: Die Länge des in wort gespeicherten Strings (OHNE Stoppzeichen)
- printf("Länge des aktuellen Inhaltes von wort (%s): %i\n\n",wort,strlen(wort));
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement