i have search and found a solution but i cant figure it out why my code still not working, if i understand it right my check2 string not having '\0'. im using visual studio i know there is a better way to write and short then this but just tried to practice some things and tried to do it harder then its need to be. im new to C so dont judge me :P this is my code:
#include <stdio.h>
#include <string.h>
/*
A palindrome is a string that is same in both forward and backward reading.
Example:
   "madam"
   "racecar"
   "a man a plan a canal panama"
   "radar"
You will write a program that will test if a given string is a palingdrome or not.
Your program will ask the user to input a string and if the string is a palindrome program
will just print "Yes, it is a Palindrome", otherwise will print "No, not a Palindrome".
Please note that:
1. Your you need to check in case-insensitive way, that means: Madam or madam both should be
detected as Palindrome.
2. There can be (any number of ) spaces in between the words.
    "A man a plan a canal panama"
        OR
    "A     man    a   pla n a cana l Panama"
    both the strings must be detected as Palindrome.
3.There can be punctuations in between the words, for this assignments,
we consider only 4 punctuations,   . ?  ! and ,
Your program will just need to ignore them (treat them as space).
    "Cigar? Toss it in a can. It is so tragic."
    Should be detected as palindrome.
 *** For this assignment I will not write any instructions or guidance, you are free
        to implement it with your own way, you can use the string.h functions
    Good luck.
*/
int main(){
    char string [100];
    printf("Enter a string: ");
    scanf("%[^\n]", string);
    int isPalindrome = 1;  // assign 0 to this if the string is a NOT palindrome
    // write code to test if string is a palindrome
    char check1[100], check2[100];
    int i, j = 0;
    for (i = 0; string[i] != '\0'; i++, j++)
    {
        if ((string[i] >= 'A' && string[i] <= 'Z') || (string[i] >= 'a' && string[i] <= 'z'))
        {
            check1[i] = string[i];
        }
    }
    check1[i] = '\0';
    for (i = strlen(string); i < 0; i--)
    {
        if ((string[i] >= 'A' && string[i] <= 'Z') || (string[i] >= 'a' && string[i] <= 'z'))
        {
            check2[i] = string[i];
        }
    }
    i = strlen(string);
    check2[i] = '\0';
    for (i = 0; check1[i] != '\0'; i++)
    {
        if ((check1[i] >= 65) && (check1[i] <= 90))
            check1[i] = check1[i] + 32;
    }
    for (i = 0; check2[i] != '\0'; i++)
    {
        if ((check2[i] >= 65) && (check2[i] <= 90))
            check2[i] = check2[i] + 32;
    }
    printf("%s\n", check1);
    printf("%s\n", check2);
    isPalindrome = strcmp(check1, check2);
    // at the end you need to test
    if (isPalindrome){
        printf("Yes, it is Palindrome!\n");
    }
    else{
        printf("No, not a Palindrome\n");
    }
    return 0;
}
and this is my output:
Enter a string: MadaM
madam
╠╠╠╠╠
Yes, it is Palindrome!
Press any key to continue . . .
ok so now my code look like that:
#include <stdio.h>
#include <string.h>
/*
A palindrome is a string that is same in both forward and backward reading.
Example:
   "madam"
   "racecar"
   "a man a plan a canal panama"
   "radar"
You will write a program that will test if a given string is a palingdrome or not.
Your program will ask the user to input a string and if the string is a palindrome program
will just print "Yes, it is a Palindrome", otherwise will print "No, not a Palindrome".
Please note that:
1. Your you need to check in case-insensitive way, that means: Madam or madam both should be
detected as Palindrome.
2. There can be (any number of ) spaces in between the words.
    "A man a plan a canal panama"
        OR
    "A     man    a   pla n a cana l Panama"
    both the strings must be detected as Palindrome.
3.There can be punctuations in between the words, for this assignments,
we consider only 4 punctuations,   . ?  ! and ,
Your program will just need to ignore them (treat them as space).
    "Cigar? Toss it in a can. It is so tragic."
    Should be detected as palindrome.
 *** For this assignment I will not write any instructions or guidance, you are free
        to implement it with your own way, you can use the string.h functions
    Good luck.
*/
int main(){
    char string [100];
    printf("Enter a string: ");
    scanf("%[^\n]", string);
    int isPalindrome = 1;  // assign 0 to this if the string is a NOT palindrome
    // write code to test if string is a palindrome
    char check1[100], check2[100];
    int i, j, dess = 0, len;
    for (i = 0; string[i] != '\0'; i++)
    {
        if ((string[i] >= 'A' && string[i] <= 'Z') || (string[i] >= 'a' && string[i] <= 'z'))
        {
            check1[dess++] = string[i];
        }
    }
    check1[dess] = '\0';
    /*
    len = strlen(string);
    for (j = 0, i = 0; j < len; j++)
    {
        if ((string[j] >= 'A' && string[j] <= 'Z') || (string[j] >= 'a' && string[j] <= 'z'))
        {
            check2[i++] = string[len - j];
        }
    }
    */
    for (dess = 0, i = strlen(string) - 1; i >= 0; i--)
    {
        if ((string[i] >= 'A' && string[i] <= 'Z') || (string[i] >= 'a' && string[i] <= 'z'))
        {
            check2[dess++] = string[i];
        }
    }
    check2[dess] = '\0';
    for (i = 0; check1[i] != '\0'; i++)
    {
        if ((check1[i] >= 65) && (check1[i] <= 90))
            check1[i] = check1[i] + 32;
    }   
    for (i = 0; check2[i] != '\0'; i++)
    {
        if ((check2[i] >= 65) && (check2[i] <= 90))
            check2[i] = check2[i] + 32;
    }
    printf("%s\n", check1);
    printf("%s\n", check2);
    for (i = 0; check1[i] != '\0'; i++)
    {
        printf("%c\n", check1[i]);
    }
    for (i = 0; check2[i] != '\0'; i++)
    {
        printf("%c\n", check2[i]);
    }
    isPalindrome = strcmp(check1, check2);
    // at the end you need to test
    if (isPalindrome){
        printf("Yes, it is Palindrome!\n");
    }
    else{
        printf("No, not a Palindrome\n");
    }
    return 0;
}
but my output is:
Enter a string: MadaM
madam
madam
m
a
d
a
m
m
a
d
a
m
No, not a Palindrome
Press any key to continue . . .
why its say its not a palindrome?
 
     
    