Summary: In this example, we will learn different ways to reverse a string in the C programming language.
Example:
If the user enters ‘Pencil‘, then the output should be ‘licneP‘.
1 2 | Input: Pencil Output: licneP |
Method 1: Using Loop
The idea is to assign characters of the input string to its reverse in reverse order using the ‘while’ or ‘for’ loop.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <stdio.h> int main() { char str[30]; char rev[30]; int i=0, l=0; printf("Enter a string \n"); scanf("%[^\n]s",str); //computing length of the 'str' for(l=0; str[l] != '\0'; ++l); //assign characters to 'rev' in reverse order while(--l>=0){ rev[i++] =str[l]; } rev[i]='\0'; printf("\n"); printf("String: \t %s \n",str); printf("Reverse: \t %s",rev); return 0; } |
Output:

Using this method, we can also reverse a string with whitespace i.e., a whole sentence.
Method 2: Using Recursion
We can also reverse a string in C using the recursion algorithm.
We extract an character from the string on each recursive call and reassign them in reverse order during the traceback of the recursive calls.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <stdio.h> //recursive function void reverse(char *str, int i, int length){ //Base condition - when index exceeds the string length if(i == length) return; //extract character char ch = str[i]; //recusively call for next character reverse(str, i+1, length); //reassign in reverse order str[length-i-1] = ch; } int main() { char str[30]; int length =0; printf("Enter a string \n"); scanf("%[^\n]s",str); //computing length of the 'str' for(length=0; str[length] != '\0'; ++length); //reverse using the recusive function reverse(str, 0, length); //output the reversed string printf("%s",str); return 0; } |
Output:
Enter a stringadarsh
hsrada
Method 3: Using strrev()
string.h
library has an inbuilt function called strrev()
which in-place reverses the string passed as an argument.
Note: strrev() only works with non-linux compiler. strrev() method is not present in glibc compiler.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> #include <string.h> int main() { char string[30]; printf("Enter a string \n"); scanf("%[^\n]s",string); printf("\n"); printf("String: \t %s \n",string); //reversing string using inbuilt strrev() method strrev(string); printf("Reverse: \t %s",string); printf("\n"); return 0; } |
Output:

These are three different ways we can use to reverse a string in a C programming language. Please comment below if you know any other methods.