Einführung
Zeiger bieten einen direkten Zugang zum Arbeitsspeicher, und indem wir Zeiger verwenden, können wir auf die Werte und Adressen von Variablen und Arrays im Arbeitsspeicher zugreifen und manipulieren. Das Programm, das wir in diesem Lab erstellen werden, wird Zeigervariablen verwenden, um einen gegebenen String umzukehren.
Hinweis: Sie müssen die Datei
~/project/main.cselbst erstellen, um zu üben, wie man Code schreibt und wie man es mit gcc kompiliert und ausführt.
cd ~/project
## main.c erstellen
touch main.c
## main.c kompilieren
gcc main.c -o main
## main ausführen
./main
Stringvariablen deklarieren
Wir beginnen mit der Deklaration zweier char-Arrays: Einem für den ursprünglichen String und einem für den umgekehrten String.
char str[100];
char rev[100];
Zeigervariablen deklarieren
Jetzt werden wir zwei Zeigervariablen deklarieren: Eine, um auf das erste Element des Strings str zu verweisen, und die andere, um auf das erste Element des umgekehrten Strings rev zu verweisen.
char *sptr = str;
char *rptr = rev;
Eingaben vom Benutzer erhalten
Wir werden den Benutzer bitten, einen String einzugeben, den er umkehren möchte, indem wir die scanf-Funktion verwenden:
printf("Enter a string: ");
scanf("%s", str);
Das Ende des Strings finden
Wir müssen das Ende des Strings finden, damit wir es in umgekehrter Reihenfolge durchlaufen können. Wir werden eine while-Schleife verwenden, um sptr zu erhöhen, bis es auf das Nullzeichen am Ende des Strings zeigt.
while(*sptr)
{
sptr++;
}
Den String umkehren
Jetzt werden wir eine while-Schleife verwenden, um den String str in umgekehrter Reihenfolge durchzugehen. Wir werden sptr dekrementieren, um von dem Nullzeichen zum letzten Zeichen des Strings zu gelangen, und für jedes Element im String werden wir den Wert mithilfe des *-Operators im umgekehrten String rev speichern.
while(sptr >= str)
{
*rptr = *sptr;
rptr++;
sptr--;
}
Nul-Byte am Ende des umgekehrten Strings hinzufügen
Das Ende des umgekehrten Strings wurde erreicht. Wir müssen das Leerzeichen am Ende des umgekehrten Strings hinzufügen:
*rptr = '\0';
Den umgekehrten String in den ursprünglichen String kopieren
Jetzt werden wir den umgekehrten String in den ursprünglichen String kopieren.
strcpy(str, rev);
Den umgekehrten String ausgeben
Schließlich werden wir den umgekehrten String ausgeben.
printf("Reversed string: %s\n", str);
Zusammenfassung
In diesem Lab haben wir gelernt, wie man Zeigervariablen verwendet, um einen gegebenen String umzukehren. Zeiger bieten einen direkten Zugang zum Arbeitsspeicher, und indem wir sie verwenden, können wir auf die Werte und Adressen von Variablen und Arrays im Arbeitsspeicher zugreifen und manipulieren. Wir haben eine while-Schleife verwendet, um den String in umgekehrter Reihenfolge durchzugehen, den umgekehrten String in einem neuen Zeichenarray gespeichert und ein Leerzeichen am Ende des umgekehrten Strings hinzugefügt. Schließlich haben wir den umgekehrten String in den ursprünglichen String kopiert und ihn ausgegeben.



