3 Verklaar de omgekeerde functie als volgt :
leegte achteruit ( char * txt , char * newTxt ) {
Deze functie leest de tekenreeks te beginnen bij de herinnering adres opgeslagen in " txt ", dan kopieert deze in omgekeerde volgorde om het geheugen naar wijst " newTxt . " De functie gaat ervan uit dat er voldoende geheugen is toegewezen voor de nieuwe snaar
4
Maak een personage pointer " c " als volgt : .
Char *
c = txt + strlen ( txt ) ;
Het karakter pointer " * c " is niets meer dan een plek om een geheugenadres slaan . Initialiseren door het ophalen van het adres in " txt ", voeg dan de lengte van de tekenreeks
5
Kopieer de tekst met behulp van de volgende lus "terwijl" : .
Terwijl ( c > txt ) {
c
- ;
* newTxt = * c ;
newTxt + + ;
}
Verplaats de " c " pointer opnieuw een teken ( het was geïnitialiseerd een teken voorbij het einde van de tekenreeks ) . Zodra u het laatste teken , kopieer het naar het eerste teken van de nieuwe string als gewezen door " newTxt . " Vooraf de " newTxt " pointer vooruit een teken . De tweede keer door , kopieert u de een-na - de - laatste teken van de " txt " string naar het tweede teken van de " newTxt " string . Dit gaat door totdat je weer terug naar het begin
6
Voeg een trailing nul tot de " newTxt " string en de afwerking van de functie
* newTxt = 0 ; . .
}
In C + + , alle tekenreeksen eindigen met een binaire nul
7
Voeg de code om de functie te testen als volgt : .
int _tmain ( int argc , _TCHAR * argv [ ] ) {
char * txt = " Vier score en zeven jaar geleden ... "
;
char * newTxt ;
newTxt = ( char * ) malloc ( strlen ( txt ) 1 ) ;
omgekeerde
( txt , newTxt ) ;
printf ( " % s \\ n " , newTxt ) ;
gratis ( newTxt ) ;
return 0 ; }
Variabelen
hebben dezelfde namen als in de functie om verwarring te voorkomen . De " malloc " functie wijst geheugen toe aan de " newTxt " string , dan is de functie wordt aangeroepen . Daarna print de nieuwe string naar de console , dan vrij het geheugen door " malloc . " Toegewezen
Om het programma te testen in Visual Studio , druk op F5 .
< br >