C Program to Check Whether a String is Palindrome

Palindrome string is a string that reads the same from both forward and backward directions. For example, “madam” reads the same from both directions. If you reverse a palindrome string, the reversed string would be the same as the original one. Here we’ll see how to write C program to check whether a string is a palindrome.

Method 1

int is_palindrome(char *str) {
  int len = 0, i = 0;
  if(str == NULL) return 0;

  len = strlen(str);

  for(i = 0; i < len/2; i++) {
    if(str[i] != str[len - i -1]) return 0;
  }

  return 1;
}

The above function, is_palindrome(), returns 1 if the input string is a palindrome, otherwise returns 0. It compares the first character with the last character, second character with second last character and so on. If any comparison fails (not equal), that means the string is not palindrome. It returns 0. If all comparisons pass, it returns 1.

Check Palindrome String

Method 2

As I said earlier, the reverse of a palindrome string would be same as the original one. We can first reverse the string and check whether the original string is equal to the original one.

void reverse_string(char *input, char *output) {
  int len = 0, i = 0;

  if(input == NULL || output == NULL) return;

  len = strlen(input);

  for(i = 0; i < len; i++) {
    output[i] = input[len - i -1];
  }

  output[len] = '\0';
}

int is_palindrome(char *str) {
  char rev[128];

  if (str == NULL) return 0;

  reverse_string(str, rev);

  if(strcmp(str, rev) == 0) return 1;

  return 0;
}

The Complete Program

You can compile and run this program.

#include <stdio.h>
#include <string.h>


int is_palindrome(char *str) {
  int len = 0, i = 0;
  if(str == NULL) return 0;

  len = strlen(str);

  for(i = 0; i < len/2; i++) {
    if(str[i] != str[len - i -1]) return 0;
  }

  return 1;
}

int main(){
  char str[128];

  printf("Enter string: ");
  gets(str);

  if(is_palindrome(str)) {
    printf("\"%s\" is a palindrome.\n", str);
  } else {
    printf("\"%s\" is not a palindrome.\n", str);
  }

  return 0;
}

Output of the above program:

Enter string: step on no pets
"step on no pets" is a palindrome.

Enter string: step on no pet
"step on no pet" is not a palindrome.

Author: Srikanta

I write here to help the readers learn and understand computer programing, algorithms, networking, OS concepts etc. in a simple way. I have 20 years of working experience in computer networking and industrial automation.


If you also want to contribute, click here.

Leave a Reply

Your email address will not be published. Required fields are marked *

2
0
3
2
0
0