codescracker
c++

C++ Program to Reverse a String



« Previous Program Next Program »

In this article, you will learn and get code to reverse a string in C++ programming. Here are the list of programs on reversing of a string entered by user at run-time:

Reverse a String without using Library Function

To reverse a string in C++ programming, ask from user to enter a string. Then reverse it and print the reversed string as shown in the program given below:

The question is, write a C++ program to reverse a string entered by user. Here is its answer:

// C++ Program to Reverse a String
// ----codescracker.com----

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    char str[200], strTemp[200];
    int len, i=0;
    cout<<"Enter the String: ";
    gets(str);
    while(str[i]!='\0')
        i++;
    len = i;
    strTemp[len] = '\0';
    len--;
    i = 0;
    while(str[i]!='\0')
    {
        strTemp[len] = str[i];
        i++;
        len--;
    }
    i=0;
    while(strTemp[i]!='\0')
    {
        str[i] = strTemp[i];
        i++;
    }
    cout<<"\nReverse = "<<str;
    cout<<endl;
    return 0;
}

This program was build and run under Code::Blocks IDE. Here is its sample run:

C++ program to reverse string

Now supply the string say this is codescracker as input and press ENTER key to reverse it and print its reverse as shown in the snapshot given below:

reverse a string c++

The following block of code:

while(str[i]!='\0')
    i++;

is used to find the length of string. That is, if string say this is codescracker entered by user, then it gets stored in str in a way that:

And at last index, a null terminated character (\0) automatically gets assigned. So str[20]=\0.

Now because, the initial value of i is 0, therefore the condition (of while loop) str[i]!='\0' or str[0]!='\0' or t!='\0' evaluates to be true, therefore the value of i gets incremented, and again the condition gets evaluated. This process continues, until the condition evaluates to be false. When the condition gets evaluated to be false, then the variable i holds its value as 20, equals the length of entered string.

The following block of C++ code:

while(str[i]!='\0')
{
    strTemp[len] = str[i];
    i++;
    len--;
}

is used to to copy the original string (in character-by-character mode) in a way that, the character at first (0th) index of str, gets initialized to last index of strTemp. That is, we've copied the original string in strTemp[] in a way that, strTemp holds the original string in reverse order.

And using this block of code:

while(strTemp[i]!='\0')
{
    str[i] = strTemp[i];
    i++;
}

The value of strTemp gets copied to str. Because strTemp holds the original string's value in reverse order, therefore the reverse of string gets initialized to str in character-by-character manner. Now print the value of str on output, that shows the reverse of entered string.

Reverse a String without using Other String

Previous program can also be created in this way, without using any other character array (string) like strTemp[]:

// ----codescracker.com----

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    char str[200], ch;
    int len, i=0, j;
    cout<<"Enter the String: ";
    gets(str);
    while(str[i]!='\0')
        i++;
    len = i;
    i = 0;
    j = len-1;
    while(i<j)
    {
        ch = str[i];
        str[i] = str[j];
        str[j] = ch;
        i++;
        j--;
    }
    cout<<"\nReverse = "<<str;
    cout<<endl;
    return 0;
}

This program works in a way that, character at 0th index gets moved to last index, and character at last index gets moved to 0th index. Again the character at second index gets moved to second last index, and character at second last index gets moved to second index, and so on.

Here the variable i starts from 0, whereas the variable j starts from len-1 (or last index's value). And the process of moving the characters continues until the value of i becomes equal to or greater than the value of j.

Reverse a String using while Loop

This program reverse a string using while loop. It is exactly the same program as of previous one, except this program uses strlen() function of string.h header file to find the length of string.

// C++ Reverse a String using while Loop
// ----codescracker.com----

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    char str[200], ch;
    int i, j, len;
    cout<<"Enter the String: ";
    gets(str);
    i = 0;
    len = strlen(str);
    j = len-1;
    while(i<j)
    {
        ch = str[i];
        str[i] = str[j];
        str[j] = ch;
        i++;
        j--;
    }
    cout<<"\nReverse = "<<str;
    cout<<endl;
    return 0;
}

Reverse a String using for Loop

Now let's create the same program using for loop. All the program given here, produces the same output:

// C++ Reverse a String using for Loop
// ----codescracker.com----

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    char str[200], ch;
    int i, j, len;
    cout<<"Enter the String: ";
    gets(str);
    len = strlen(str);
    j = len-1;
    for(i=0; i<j; i++, j--)
    {
        ch = str[i];
        str[i] = str[j];
        str[j] = ch;
    }
    cout<<"\nReverse = "<<str;
    cout<<endl;
    return 0;
}

Same Program in Other Languages

C++ Online Test


« Previous Program Next Program »



© Copyright 2021. All Rights Reserved.

CodesCracker