C program to Reverse a String

How to write a C program to Reverse a String without using the strrev function with an example?. To demonstrate the reverse a string in c programming, we are going to use For Loop, While Loop, Functions, and Pointers.

C program to Reverse a String Example 1

This reverse a string in c program allows the user to enter any string or character array. Next, it will use For Loop to iterate each character in that string, and save the characters in reverse order.

/* C program to Reverse a String without using strrev() */
 
#include <stdio.h>
#include <string.h>
 
int main()
{
  	char Str[100], RevStr[100];
  	int i, j, len;
 
  	printf("\n Please Enter any String :  ");
  	gets(Str);
  	
  	j = 0;
  	len = strlen(Str);
 
  	for (i = len - 1; i >= 0; i--)
  	{
  		RevStr[j++] = Str[i];
  	}
  	RevStr[i] = '\0';
 
  	printf("\n String after Reversing = %s", RevStr);
  	
  	return 0;
}
C program to Reverse a String without using strrev 1

From the above C Programming screenshot you can observe that,

str[] = Hello
j = 0
len = strlen(Str) = 5.

The strlen is a string function used to find the string length. Let us the programming flow of reverse a string. Please refer to strrev function.

For Loop First Iteration: for (i = len – 1; i >= 0; i–)
=> for (i = 5 – 1; 4 >= 0; 4–)
The condition (4 >= 0) is True.
RevStr[j++] = Str[i]
RevStr[0] = Str[4] = 0

Second Iteration: for (i = 4 – 1; 3 >= 0; 3–)
The condition (3 >= 0) is True.
RevStr[1] = Str[3] = l

Third Iteration: for (i = 3 – 1; 2 >= 0; 2–)
The condition (2 >= 0) is True.
RevStr[2] = Str[2] = l

Fourth Iteration: for (i = 2 – 1; 1 >= 0; 1–)
The condition (1 >= 0) is True.
RevStr[3] = Str[1] = e

Fifth Iteration: for (i = 1 – 1; 0 >= 0; 0–)
The condition (0 >= 0) is True.
RevStr[4] = Str[0] = H

Next, the condition inside the For Loop will fail

program to Reverse a String Example 2

Instead of storing a C reverse string in the separate array, in this program, we were directly printing the characters in reverse order.

/* C program to Reverse a String without using strrev() */
 
#include <stdio.h>
#include <string.h>
 
int main()
{
  	char Str[100];
  	int i, len;
 
  	printf("\n Please Enter any String :  ");
  	gets(Str);
  	
  	len = strlen(Str);
  	
 	printf("\n String after Reversing : "); 
  	for (i = len - 1; i >= 0; i--)
  	{
  		printf("%c", Str[i]);
  	}

  	return 0;
}
 Please Enter any String :  Tutorial Gateway

 String after Reversing : yawetaG lairotuT

Program to Reverse a String Example 3

In this reverse a string program, we are using the temp variable to change the location of the character. It is something like a swapping technique.

/* C program to Reverse a String without using strrev() */
 
#include <stdio.h>
#include <string.h>
 
int main()
{
  	char Str[100], temp;
  	int i, j, len;
 
  	printf("\n Please Enter any String :  ");
  	gets(Str);
  	
  	len = strlen(Str) - 1;
 
  	for (i = 0; i < strlen(Str)/2; i++)
  	{
  		temp = Str[i];
  		Str[i] = Str[len];
  		Str[len--] = temp;
  	}
 
  	printf("\n String after Reversing = %s", Str);
  	
  	return 0;
}
 Please Enter any String :  C Programming

 String after Reversing = gnimmargorP C

C program to Reverse a String Using Functions

This program to reverse a string is the same as above. However, this time we are using the recursive Functions concept to separate the logic from the main program.

/* C program to Reverse a String without using strrev() */
 
#include <stdio.h>
#include <string.h>

void reverse_String(char [], int, int);
 
int main()
{
  	char Str[100], temp;
  	int i, j, len;
 
  	printf("\n Please Enter any String :  ");
  	gets(Str);
  	
  	len = strlen(Str);
  	reverse_String(Str, 0, len -1);
 
  	printf("\n String after Reversing = %s", Str);
  	
  	return 0;
}

void reverse_String(char Str[], int i, int len)
{
	char temp;
	temp = Str[i];
	Str[i] = Str[len - i];
	Str[len - i] = temp;
	
  	if (i == len/2)
  	{
		return;
  	}
  	reverse_String(Str, i + 1, len);
}
 Please Enter any String :  Learn C Programming

 String after Reversing = gnimmargorP C nraeL

C program to Reverse a String Using Pointers

This program to reverse a string is the same as above but this time we are using Pointers to separate the logic from the main program.

/* C program to Reverse a String without using strrev() */
 
#include <stdio.h>
#include <string.h>

char* reverse_String(char *Str)
{
	static int i = 0;
	static char RevStr[10];
	
	if(*Str)
	{
		reverse_String(Str + 1);
		RevStr[i++] = *Str;
	}
	return RevStr;
}
 
int main()
{
  	char Str[100], temp;
  	int i, j, len;
 
  	printf("\n Please Enter any String :  ");
  	gets(Str);
 
  	printf("\n String after Reversing = %s", reverse_String(Str));
  	
  	return 0;
}
 Please Enter any String :  Hello World!

 String after Reversing = !dlroW olleH