Write a Program to Check if a String is a Palindrome in C

Write a Program to Check if a String is a Palindrome

A palindrome is a word, phrase, or sequence of characters that reads the same backward as forward. For example, "radar" and "level" are palindromes. In this blog post, we will guide you through writing a C program to check if a given string is a palindrome, explaining the process and breaking down the code in detail.

1. Understanding the Problem

To determine if a string is a palindrome, we need to compare characters from the beginning and the end of the string, moving toward the center. If all corresponding characters are the same, the string is a palindrome; otherwise, it is not.

2. Approach

Here’s a straightforward approach to solve the problem:

  1. Get the length of the string.
  2. Use two indices: one starting from the beginning of the string and the other from the end.
  3. Compare the characters at these indices:
    • If they are the same, move the first index forward and the second index backward.
    • If they are different, the string is not a palindrome.
  4. If all characters match, the string is a palindrome.

3. Writing the Program

Let’s implement the logic to check if a string is a palindrome in C.

Code Example: Checking for a Palindrome

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

int isPalindrome(char str[]) {
    int length = strlen(str);
    int left = 0;
    int right = length - 1;

    while (left < right) {
        if (str[left] != str[right]) {
            return 0; // Not a palindrome
        }
        left++;
        right--;
    }
    return 1; // Is a palindrome
}

int main() {
    char str[100];

    // Prompt user to enter a string
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin);
    
    // Remove the newline character from the input
    str[strcspn(str, "\n")] = 0;

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

    return 0;
}

Explanation of the Code

In this program:

  • We include the stdio.h header file for input/output functions and string.h for string manipulation functions.
  • We define a function isPalindrome() that checks if the string is a palindrome.
  • Inside this function, we calculate the length of the string and initialize two indices: left starting from the beginning and right from the end.
  • We loop while left is less than right, comparing characters at these indices. If they do not match, we return 0 (not a palindrome).
  • If all characters match, we return 1 (the string is a palindrome).
  • In the main function, we prompt the user for input and call the isPalindrome() function to check the result.

4. Example Output

Here’s an example of how the program works:

Enter a string: radar
The string 'radar' is a palindrome.

5. Common Mistakes to Avoid

When implementing this program, be aware of these common mistakes:

  • Ignoring Case Sensitivity: The current implementation is case-sensitive. To make it case-insensitive, you can convert the string to all lowercase or uppercase before comparison.
  • Handling Special Characters: If you want to ignore spaces or special characters, you will need to add additional logic to filter them out.
  • Newline Character: Ensure to remove the newline character added by fgets() to avoid incorrect results.

6. Expanding the Program

Now that you have a basic program to check for palindromes, consider these ideas for expanding it:

  • Modify the program to check if phrases are palindromes by ignoring spaces and punctuation.
  • Allow the user to input multiple strings and check each one for being a palindrome.
  • Implement a function that returns the longest palindrome within a given string.

7. Conclusion

In this post, we learned how to write a C program to check if a string is a palindrome. We provided a clear code example, detailed explanations, and discussed common pitfalls to avoid.

Understanding how to manipulate strings and check for palindromes is a fundamental skill in programming. Keep practicing with various string-related problems to strengthen your programming foundation.

0 تعليقات

إرسال تعليق

Post a Comment (0)

أحدث أقدم