Reverse a String in C
Many old books use strrev() to reverse a string. But this function is not part of standard C. It works in some Windows compilers only, and gives an error in GCC and Clang. So we write our own function, which works everywhere.
Method 1: print in reverse order
#include <stdio.h>
#include <string.h>
int main(void) {
char s[] = "Hello";
for (int i = strlen(s) - 1; i >= 0; i--) {
printf("%c", s[i]);
}
printf("\n");
return 0;
}
Output:
Output of the above program is
olleH
Method 2: reverse the string itself
We swap the first and last characters, then the second and second last, and so on until we reach the middle.
#include <stdio.h>
#include <string.h>
void reverse(char s[]) {
int left = 0, right = strlen(s) - 1;
while (left < right) {
char temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
}
int main(void) {
char word[] = "Programming";
reverse(word);
printf("%s\n", word);
return 0;
}
Output:
Output of the above program is
gnimmargorP
Palindrome check
A palindrome reads the same from both sides, like “madam”.
#include <stdio.h>
#include <string.h>
int main(void) {
char s[] = "madam";
int n = strlen(s), isPal = 1;
for (int i = 0; i < n / 2; i++) {
if (s[i] != s[n - 1 - i]) {
isPal = 0;
break;
}
}
printf(isPal ? "Palindrome\n" : "Not a palindrome\n");
return 0;
}
Output:
Output of the above program is
Palindrome
Note:
The string must be a char array (char s[]) to change it. A string literal pointer (char *s = "Hello") is read only.
Next: C Convert String to Lowercase and Uppercase.
Congratulations! Chapter Finished. Learn more about the similar topics:
| Exercises & Assignments |
|---|
| No Content Found. |
| Interview Questions & Answers |
|---|
| No Content Found. |