Merkkijonon kääntäminen C:ssä on perustavanlaatuinen toimenpide, joka sisältää merkkijonon merkkien järjestämisen uudelleen siten, että viimeisestä merkistä tulee ensimmäinen, toiseksi viimeisestä merkistä toinen ja niin edelleen.
Esimerkiksi,
Original String: 'string' Reversed String: 'gnirts'>
Tässä artikkelissa käsitellään erilaisia tapoja kääntää merkkijono C:ssä koodiesimerkein.
Eri tapoja kääntää merkkijono C:ssä
On olemassa useita tapoja kääntää merkkijono C:ssä. Joitakin niistä käsitellään alla:
- Käännä merkkijono päinvastaiseksi käyttämällä silmukkaa
- Kääntä merkkijono käyttämällä rekursiota
- Käännä merkkijono käänteisesti käyttämällä osoitinta C:ssä
- Kääntä merkkijono kirjastofunktiolla
1. Käännä merkkijono päinvastaiseksi käyttämällä silmukkaa
Tässä menetelmässä
- Käytämme for-silmukkaa, jossa on kaksi muuttujaa i ja j, jotka osoittavat merkkijonon alkuun ja loppuun.
- Korvataan merkit indekseissä i ja j ja siirrytään viereiselle oikealle ja vasemmalle, eli kasvatetaan i:tä ja vähennetään j:ää.
- Jatkamme tätä, kunnes i on suurempi tai yhtä suuri kuin j.
Tuloksena saamme käänteisen merkkijonon.
Toteutus
C
// C program to reverse the string in C using loops> #include> #include> int> main()> {> >// string to be reversed.> >char> str[100] =>'string'>;> >printf>(>'Original String: %s
'>, str);> >// string length> >int> len =>strlen>(str);> >// for loop> >for> (>int> i = 0, j = len - 1; i <= j; i++, j--) {> >// swapping characters> >char> c = str[i];> >str[i] = str[j];> >str[j] = c;> >}> >printf>(>'Reversed String: %s'>, str);> >return> 0;> }> |
>
>Lähtö
ero ohjelman ja skriptin välillä
Original String: string Reversed String: gnirts>
2. Kääntä merkkijono käyttämällä rekursiota
Tässä menetelmässä käytämme rekursiota merkkien vaihtamiseen.
Toteutus
C
// C program to reverse string using recursion> #include> #include> // recursive function to reverse string> void> reverse(>char>* str,>int> len,>int> i,>int> temp)> {> >// if current index is less than the remaining length of> >// string> >if> (i temp = str[i]; str[i] = str[len - 1]; str[len - 1] = temp; i++; len--; reverse(str, len, i, temp); } } // driver code int main() { char str[100] = 'string'; printf('Original String: %s
', str); int len = strlen(str); reverse(str, len, 0, 0); printf('Reversed String: %s', str); return 0; }> |
>
>
java lisätä taulukkoonLähtö
Original String: string Reversed String: gnirts>
3. Käännä merkkijono käänteisesti käyttämällä osoitinta C:ssä
Käytämme tässä kahta osoitinta, yksi on aloitusosoitin ja toinen on loppuosoitin. ja vaihtamalla hahmoa, jonka saavuttamiseksi jatkamme, käännä merkit samalla tavalla kuin ensimmäisessä menetelmässä.
Toteutus
C
// C program to reverse a string using pointers> #include> #include> // function to reverse the string> void> stringReverse(>char>* str)> {> >int> len =>strlen>(str);> >// pointers to start and end> >char>* start = str;> >char>* end = str + len - 1;> >while> (start char temp = *start; *start = *end; *end = temp; start++; end--; } } // driver code int main() { char str[] = 'string'; printf('Original String: %s
', str); // calling function stringReverse(str); printf('Reversed String: %s', str); return 0; }> |
>
skriptien ajaminen linuxissa
>Lähtö
Original String: string Reversed String: gnirts>
4. Kääntä merkkijono kirjastofunktiolla
C:ssä meillä on sisällä määritelty kirjastofunktio, jota voidaan käyttää merkkijonon kääntämiseen. Strrev()-funktio on yksinkertaisin tapa kääntää merkkijono.
Syntaksi
char* strrev(char* str);>
missä str on käännettävä merkkijono.
Huomautus: Strrev()-funktio ei ole osa standardi C-kieltä, joten sitä ei välttämättä ole jokaisessa kääntäjässä.
Toteutus
C
// C program to reverse a string using strrev()> #include> #include> int> main()> {> >char> str[] =>'string'>;> >printf>(>'Original String: %s
'>, str);> >// reversing string> >printf>(>'Reversed String: %s'>, strrev(str));> >return> 0;> }> |
>
>
Lähtö
Original String: string Reversed String: gnirts>