In C, reversing a string means rearranging the characters such that the last character becomes the first, the second-to-last character becomes the second, and so on. In this article, we will learn how to reverse string in C.
The most straightforward method to reverse string is by using two pointers to swap the corresponding characters starting from beginning and the end while moving the indexes towards each other till they meet each other.
C
#include <stdio.h>
#include <string.h>
void rev(char* s) {
// Initialize l and r pointers
int l = 0;
int r = strlen(s) - 1;
char t;
// Swap characters till l and r meet
while (l < r) {
// Swap characters
t = s[l];
s[l] = s[r];
s[r] = t;
// Move pointers towards each other
l++;
r--;
}
}
int main() {
char s[100] = "abcde";
// Reversing s
rev(s);
printf("%s", s);
return 0;
}
Apart from the simple method mentioned above, there are few more methods which we can use to reverse the string. Some of them are:
Using Recursion
The two-pointer approach can also be implemented using recursion. Just pass the left and the right index pointer as argument to the recursive function and move them towards each other in each recursive call.
C
#include <stdio.h>
#include <string.h>
void rev(char* s, int l, int r) {
// Base case is when l becomes greater than r
if (l >= r) return;
// Swap characters
char t = s[l];
s[l] = s[r];
s[r] = t;
// Recursively call the function with updated
// index pointers
rev(s, l + 1, r - 1);
}
int main() {
char s[100] = "abcde";
rev(s, 0, strlen(s) - 1);
printf("%s", s);
return 0;
}
Using Temporary Array
Store the reverse of string in a temporary array by traversing it from the back and copying each character to the other array. Then copy the reversed string from another array into the original string.
C
#include <stdio.h>
#include <string.h>
void rev(char* s) {
char t[100];
int len = strlen(s);
int i = 0;
// Push all characters of string s onto t
while (len > 0) t[i++] = s[len-- - 1];
t[i] = '\0';
// Copying all characters from t to
// original string s
strcpy(s, t);
}
int main() {
char s[100] = "abcde";
// Reversing string s
rev(s);
printf("%s", s);
return 0;
}
Using Library Function
In C, strrev() defined inside <string.h> can be used to reverse a string. This function provides the simplest method to reverse the string.
C
#include <stdio.h>
#include <string.h>
int main() {
char s[] = "abcde";
// Reversing string using strrev()
printf("%s", strrev(s));
return 0;
}
Output
edcba
Note: The strrev() function is not a part of the standard C language, so it might not be present in every compiler.